整数不使用if语句

时间:2018-04-27 18:20:41

标签: java if-statement

我正在制作一个基于文本的游戏,我正在尝试不同的方法来制作游戏进度的故事情节。 (我很抱歉,如果这是半难以理解的,我是这个网站的新手,而且还是Java的新手,我正在为一个课程项目做这个)

我尝试的方法之一是将值(在本例中为LevelNum)增加1,并且只要显示不等于零的数字,它就会将jLabel1的文本设置为文本的任何内容。

我试图通过使用如下所示的if语句来做到这一点:

if(LevelNum == 0) {
                jLabel1.setText(StoryData.LevelOne);
            }

LevelNum的增加是这样的:

public void actionPerformed(ActionEvent e) {
                    LevelNum += 1;
                    System.out.println(LevelNum);

            }

(System.out只是为了检查它是否增加了数字)

我遇到的问题是,无论jLabel1的值是什么,文本都不会改变,我也不知道为什么。

整个代码可以在这里找到:https://pastebin.com/JSX6urFT

StoryData是我文本文档中的单独类,各个字符串如下所示:static String LevelOne = "Level one test";

以下是与LevelNum相关的所有代码:

public class DemoGUI extends javax.swing.JFrame {

private static int LevelNumBackUp = 0;
private static int LevelNum = 0;
public JTextArea jLabel1;
public JTextField jText1;
public JButton jButton1;
public JButton jButton2;
public JButton jButton3;
public JButton jButton4;
public JButton jButtonStart;
public JTextArea jTextAreaStart;
public JButton jButtonCredits;
public JButton jButtonReturn;

public static void main(String[] args) {
    int LevelNum = 0;
    int LevelNumBackUp = 0;

3 个答案:

答案 0 :(得分:0)

更改标签的价值后,尝试拨打revalidate()repaint()来更新您的用户界面

答案 1 :(得分:0)

查看完整代码,增加LevelNum的部分位于以下块中:

jButton3.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    LevelNum += 1;
                    System.out.println(LevelNum);

                }
            });

然后,在下面,你有这个代码:

if(LevelNum == 1) {
                jLabel1.setText(StoryData.LevelOne);
            }

让我们按计算机的方式浏览代码。当我们到达第一个块时,我们添加一个新的ActionListener。但是,我们不会立即执行actionPerformed方法,因此LevelNum仍然是以前的。稍后,我们进入if语句,但LevelNum没有增加。

当触发ActionListener并执行actionPerformed方法时,它会递增LevelNum然后打印新的LevelNum,但它不会更改jLabel1,因为没有代码告诉它这样做。

看起来你想要做的是在actionPerformed方法中更新jLabel1。

答案 2 :(得分:0)

在actionPerformed中保持级别更改代码。 试试这个:

public void actionPerformed(ActionEvent e) {
                    LevelNum += 1;
                    System.out.println(LevelNum);
                    // Introduction
                    if (LevelNum == 1) {
                        jLabel1.setText("level1");
                    }
                    if (LevelNum == 2) {
                        jLabel1.setText("level2");
                    }
                    if (LevelNum == 3) {
                        jLabel1.setText("level3");
                    }

                }