我正在制作一个基于文本的游戏,我正在尝试不同的方法来制作游戏进度的故事情节。 (我很抱歉,如果这是半难以理解的,我是这个网站的新手,而且还是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;
答案 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");
}
}