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

时间:2016-01-11 10:09:46

标签: java eclipse timer jlabel

昨天,我发布了一个问题,因为我有一些麻烦要刷新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的另一个问题。当我更正代码但仍有问题时,我是否应该创建并“回答”所做的更正和新问题或打开一个新问题?我总是对此有所怀疑。

感谢您的所有答案。问候。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。这是JRE版本的问题。使用1.7版本,没关系。 1.8,我有一个bug。所以,我会保留1.7。