一旦满足IF条件,尝试更新Java Swing JLabel文本字段以显示新文本

问题描述 投票:0回答:1

我正在研究一个简单的GUI项目,以获取Java Swing的基础。我创建了一个Rock Paper Scissors游戏,您可以在针对我的GUI的计算机上玩游戏]

My text based GUI Form for Rock, Paper,Scissors

我的问题是,一旦我的分数或计算机分数达到3的值,我都希望框架上的文本发生变化。我尝试实现代码以检查按钮函数中变量每次增加的时间,但仍然无法正常工作,主要功能的实现也不起作用,一旦得分达到3,游戏就不会更改任何文本或停止播放。

    chooseRock.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String cc = getCompChoice();
                if (cc.equalsIgnoreCase("Paper")) {
                    compcount++;

                    if(compcount == 3){
                         winner.setText("Computer Wins");
                       }

                    compChoice.setText("Computers Choice: " + cc);

此代码显示了GUI对象和用于选择“ Rock”的侦听器,对于纸质和剪刀来说,代码都是相同的。 compchoice和playchoice都在顶部声明了其他属性。

    gameScreen(String title){
     super(title);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setContentPane(gameBoard);
    this.pack();


        chooseRock.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String cc = getCompChoice();
                if (cc.equalsIgnoreCase("Paper")) {
                    compcount++;

                    compChoice.setText("Computers Choice: " + cc);

                    compScore.setText("Computer Score: " + compcount);

                } else if (cc.equalsIgnoreCase("Scissors")) {
                    playcount++;

                    compChoice.setText("Computers Choice: " + cc);

                    playerScore.setText("Your Score: " + playcount);
                } else {

                    compChoice.setText("Computers Choice: " + cc + " Its a DRAW!");
                }


            }
        });

这是我编写的用于检查分数并显示获胜者的功能,“获胜者”文本显示在面板顶部并带有占位符。

    public void checkScore(){
    if(playcount == 3 ){ 
        winner.setText("GAME OVER - PLAYER WINS");
        chooseRock.setEnabled(false);
        chooseScissors.setEnabled(false);
        choosePaper.setEnabled(false);

    }else if(compcount == 3 ){
        winner.setText("GAME OVER - COMPUTER WINS! BETTER LUCK NEXT TIME");
        chooseRock.setEnabled(false);
        chooseScissors.setEnabled(false);
        choosePaper.setEnabled(false);
    }
}

有没有办法接受写在侦听器内部的变量,并使用它来更改文本字段,或者是否应该采用类似的方式来实现这种条件?

我正在研究一个简单的GUI项目,以获取Java Swing的基础。我创建了一个Rock Paper Scissors游戏,您在计算机上玩该游戏,该计算机为基于我的文本的GUI窗体实现了GUI ...

java swing user-interface if-statement jtextfield
1个回答
0
投票

您应该在ActionListeners actionPerformed方法中调用checkScore(),以便在每次按下按钮时就计算分数并采取行动。

© www.soinside.com 2019 - 2024. All rights reserved.