Java StringBuilder - 追加字符

时间:2012-12-06 01:02:19

标签: java netbeans append stringbuilder

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

更改了“星星”的所有实例

1 个答案:

答案 0 :(得分:1)

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

其次,你制作public static String stars = totalStars.toString();但是没关系 这并不意味着stars将始终包含totalString所拥有的内容。这只是瞬间的。

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