昨天,我发布了一个问题,因为我在刷新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。