我是一名編程青蛙遊戲的學生,當青蛙與對象碰撞或到達結束區域時,分數遞增或者遞減,青蛙回到了開始位置。這部分工作,並將其輸出到控制檯時遞減和遞增工作,我嘗試將該變量傳遞給另一個jpanel並將其顯示在那裏,但它不更新和顯示textField中的變量。試圖顯示在一個jpanel中創建的變量,並將其顯示在另一個jpanel中
遊戲面板
public GamePanel() {
super();
setFocusable(true);
addKeyListener(new KeyList());
System.out.println("GAME PANE FOCUS:" + this.isFocusOwner());
scores.setVisible(true);
lives = p.STARTLIVES;
scores.setCurrentLives(lives);
txtTest.setText("Hello");
txtTest.setVisible(true);
add(scores,new AbsoluteConstraints(0,550,50,800));
Boolean displayable = scores.isDisplayable();
System.out.println("Displayable" + displayable);
scores.setEnabled(false);
scores.revalidate();
scores.repaint();
scores.setVisible(true);
System.out.println("Displayable" + displayable);
car1.start();
car2.start();
car3.start();
car4.start();
Log1.start();
Log2.start();
Log3.start();
Log4.start();
Log5.start();
Log6.start();
Log7.start();
Log8.start();
//check for collisions
}
final public void winZone(Rectangle object){
if(myFrog.frogArea().intersects(object)){
currentScore = currentScore + 100;
System.out.println("current Score " + currentScore);
p.setScore(currentScore);
scores.myScore().setText("hello");
myFrog.lostLife();
}
分數面板
public class jplScores extends JPanel {
Properties p = new Properties();
int currentLives;
int i;
/** Creates new form jplScores */
public jplScores() {
initComponents();
}
public void setCurrentLives(int Lives){
currentLives = Lives;
}
public String getCurrentLives(){
String L = Integer.toString(currentLives);
return L;
}
public JTextField myScore(){
return txtScore;
}
目前,它會從幀顯示的JPanel,他們都在,但我試圖使面板內會這樣其面板但我不能讓面板在遊戲面板中顯示。
任何幫助將是巨大的感謝
public FroggerGame() {
initComponents();
setFocusable(true);
//repaint();
// p.setHeight(550);
// p.setWidth(800);
// p.setLives(3);
// p.setScore(0);
PANELHEIGHT = p.getHeight();
PANELWIDTH = p.getWidth();
welcomePanel();
/*
Toolkit tool = Toolkit.getDefaultToolkit();
imgBackground = tool.getImage(imageBackground);
background = new ImageIcon(imgBackground);
//setDefaultCloseOperation(EXIT_ON_CLOSE);
*/
jps.myScore().addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
// txtScorePropertyChange(evt);
jps.myScore().setText(Integer.toString(gp.currentScore()));
System.out.println(Integer.toString(gp.currentScore()));
jps.getScore(gp.currentScore());
System.out.println(" main score " + gp.currentScore());
}
});
}
....
private void btnEnterActionPerformed(ActionEvent evt) {
welcomePanel.setVisible(false);
getContentPane().setLayout(new AbsoluteLayout());
getContentPane().add(gp,new AbsoluteConstraints(0,0,800,550));
getContentPane().add(jps,new AbsoluteConstraints(0,550,800,100));
//gp.setSize(800, 550);
// gp.setBounds(0, 0, 800, 550);
gp.setVisible(true);
gp.requestFocusInWindow();
jps.setVisible(true);
金幣是遊戲面板和JPS是樂譜面板。
我已經嘗試了上面的公共方法和這項工作,當面板第一次顯示時,它顯示了它第一次調用時的值,但之後無法更新。您建議使用什麼樣的監聽器,因爲該操作取決於用戶現在通過按鍵或鼠標單擊與某物碰撞。我會在早上嘗試你的「推」解決方案,因爲我可能錯過了一些東西。非常感謝您的回覆 – 2012-04-22 23:52:54
@Nathan:最通用的偵聽器可能是一個PropertyChangeListener。 – 2012-04-23 02:01:14
我試過屬性更改偵聽器,但這似乎並沒有工作只承認最初的變化ive添加了一些更多的代碼時,我將面板添加到框架和監聽器。 它的1個框架類和兩個獨立的面板,我想從一個面板的數據出現在另一個實時作爲其遊戲的一部分。 很多再次感謝 – 2012-04-23 14:11:44