0

我有一个hangmanframe、welcomeframe 和一个大型机,当你赢得一个hangman 游戏时,我想在大型机上附加星号(*)

刽子手框架:

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();
    }

欢迎框架:

    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”实例

4

1 回答 1

1

首先,您的程序将无法编译,因为public static void return() {...,我想您应该知道这return是 Java 中的保留字

其次,You makepublic static String stars = totalStars.toString();是可以的,但这并不意味着它stars总是包含所totalString拥有的东西。这只是瞬间的。

你绝对应该使用totalLabel.setText(totalStars.toString());

于 2012-12-06T01:04:44.263 回答