【问题标题】:Java StringBuilder - appending charactersJava StringBuilder - 附加字符
【发布时间】:2012-11-23 23:48:14
【问题描述】:

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

欢迎框:

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

【问题讨论】:

  • 此代码甚至无法编译:“return”是关键字,不能用作 MainFrame 列表中的方法名称。在另一个主题上,我建议遵循良好的 OOP 实践并将字段正确封装在 getter/setter 方法中。
  • 我把方法改成了returnMain(),谢谢

标签: java netbeans append stringbuilder


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!它有效,但它产生了多颗星,我只想要一颗?
  • @CodeAddict 支持我的回答然后 =) 如果您想要一个星号,请附加一个星号,而不是更多。
  • 好的,所以当你赢得刽子手游戏时,代码会读取MainFrame.totalStars.append("*");,如果这个代码只读取一次,为什么它会执行多次?
  • @CodeAddict 如果您多次单击该按钮,它将追加更多。
  • 我显然在很多地方都有 append 方法,只是把除了一个之外的所有东西都拿出来了,它就可以工作了。谢谢!接受为答案
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 2016-04-05
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 2020-04-01
  • 2011-12-31
  • 2013-09-30
相关资源
最近更新 更多