我有一个hangmanframe,welcomeframe和一个大型机,当你赢得一个刽子手游戏时,我想在主机上附加星号(*)
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()”
更改了“星星”的所有实例答案 0 :(得分:1)
首先,由于public static void return() {...
,您的程序无法编译,我认为您应该知道return
是Java中的保留字。
其次,你制作public static String stars = totalStars.toString();
但是没关系
这并不意味着stars
将始终包含totalString
所拥有的内容。这只是瞬间的。
你绝对应该使用totalLabel.setText(totalStars.toString());