0

ハングマンフレーム、ウェルカムフレーム、メインフレームがあり、ハングマンゲームに勝ったときにメインフレームに星 (*) を追加したい

ハングマン フレーム:

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()」で「星」のすべてのインスタンスを変更しました

4

1 に答える 1

1

まず、 が原因でプログラムがコンパイルされません。これは Javaの予約語であるpublic static void return() {...ことを知っておく必要があると思います。return

第二に、あなたが作るpublic static String stars = totalStars.toString();ことは問題ありませんが、それstarsは常に持っているものtotalStringを含むという意味ではありません。それはほんの一瞬です。

あなたは間違いなく使うべきですtotalLabel.setText(totalStars.toString());

于 2012-12-06T01:04:44.263 に答える