我有一个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());

09-07 20:19