Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的JLabel刷新方式不同,具体取决于Eclipse项目。为什么?_Java_Eclipse_Timer_Jlabel - Fatal编程技术网

Java 我的JLabel刷新方式不同,具体取决于Eclipse项目。为什么?

Java 我的JLabel刷新方式不同,具体取决于Eclipse项目。为什么?,java,eclipse,timer,jlabel,Java,Eclipse,Timer,Jlabel,昨天,我发布了一个问题,因为我在刷新JLabel中显示的文本时遇到了一些问题。很多人很快就回答了(我非常感谢他们)并更正了我的代码。但是,在修改之后,我遇到了同样的问题 今天早上,我做了一个新的尝试:我复制了我的类并将其粘贴到另一个Eclipse项目中:同一台机器,同一个Eclipse,只是另一个包含其他库的项目,在测试代码中没有使用。结果:没问题,它工作得很好。我还试图删除第一个项目中的所有库,认为这将是问题所在。但是,没有外部罐子,我仍然有问题。我还试图用我的简单代码在Eclipse中创建一

昨天,我发布了一个问题,因为我在刷新JLabel中显示的文本时遇到了一些问题。很多人很快就回答了(我非常感谢他们)并更正了我的代码。但是,在修改之后,我遇到了同样的问题

今天早上,我做了一个新的尝试:我复制了我的类并将其粘贴到另一个Eclipse项目中:同一台机器,同一个Eclipse,只是另一个包含其他库的项目,在测试代码中没有使用。结果:没问题,它工作得很好。我还试图删除第一个项目中的所有库,认为这将是问题所在。但是,没有外部罐子,我仍然有问题。我还试图用我的简单代码在Eclipse中创建一个“新JAVA项目”,但问题也出现了。我的问题是:为什么以及如何纠正这一人工制品

以下是我正在使用的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class TestLabel extends JPanel implements ActionListener{
JLabel label;
static int i=0;
static Timer timer;
TestLabel() {
    label = new JLabel("0");
    this.add(label);
    timer=new Timer(100, this);
    //timer.setInitialDelay(10);
    timer.start();      
}

public static void createJFrame () {
    JFrame frame = new JFrame();
    frame.setTitle("Test");
    frame.setSize(200, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new TestLabel());
    frame.setVisible(true);     
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createJFrame();
        }
    }); 
}

@Override
public void actionPerformed(ActionEvent e) {
    i+=1;
    label.setText(String.valueOf(i));       
}
}
第一个项目中代码中的问题是:JLabel不会在每次修改“i”时更改。它显示类似于:1,2,3(…)42,47,52,57

PS:另一个关于Stackoverflow使用的问题。当我更正代码但仍有问题时,我是创建并“回答”所做的更正和新问题,还是打开一个新问题?对此我总是有些怀疑


谢谢你的回答。问候。

我解决了我的问题。这是JRE版本的一个问题。有了1.7版,就没问题了。使用1.8,我有一个bug。因此,我将保留1.7.

不同的Java版本,可能吗?我知道我在一次特定的Java更新中遇到了刷新问题,尽管我不记得是哪一次。(不仅在我的代码中;它还破坏了许多其他程序)在更改了label.repaint()的文本后,您可能需要调用它。嗯。。。我做了一次新的尝试。项目之间的区别在于所使用的JRE:版本1.7或1.8。对于1.7版:没关系。对于1.8,我遇到了一些麻烦。我知道如何纠正我的问题,但我仍然无法回答“为什么”。。。