我有一个hangmanframe,welcomeframe和一个大型机,当您赢得一个hangman游戏时,我想在大型机上附加星号(*)
HangmanFrame:
public void win(){
JOptionPane.showMessageDialog(null, "Congrats! The word was " + GuessWord);
MainFrame.totalStars.append("*");
MainFrame.totalLabel.setText(MainFrame.stars);
setVisible(false);
MainFrame.hangmanButton.setEnabled(false);
MainFrame.returnMain();
}
大型机:
public static final StringBuilder totalStars = new StringBuilder();
public static String stars = totalStars.toString();
public static void returnMain(){
totalStars.append("* ");
totalLabel.setText(stars);
WelcomeFrame.playButton.doClick();
}
WelcomeFrame:
private void playButtonActionPerformed(java.awt.event.ActionEvent evt) {
String userName = nameText.getText();
// Open MainFrame
MainFrame MFrame = new MainFrame();
MFrame.setVisible(true);
setVisible(false);
MainFrame.welcomeLabel.setText("Welcome " + userName + "!");
MainFrame.totalStars.append("* ");
MainFrame.totalStarsLabel.setText(MainFrame.stars);
}
我有一个标签(totalLabel),我想添加星号(*)。但是,当该方法在HangmanFrame中运行时,它将转到PlayFrame,但不会添加任何星星。
谁能看到我在做什么错?
解决了:
将方法名称更改为returnMain()
使用“ totalStars.toString()”更改了“ stars”的所有实例
最佳答案
首先,由于public static void return() {...
您的程序将无法编译,我想您应该知道return
是Java中的保留字。
其次,您输入public static String stars = totalStars.toString();
,但是没关系
这并不意味着stars
将始终包含totalString
的内容。它只是瞬间。
您绝对应该使用totalLabel.setText(totalStars.toString());