我需要一点帮助摆动。这是我的代码:
public class UIdostawca extends javax.swing.JFrame {
/** Creates new form UIdostawca */
public UIdostawca() {
initComponents();
setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE);
}
/* This is my function */
public void loadStuff() {
jLabel2.setText("Works or not?");
}
/*
A lot of code generated by NETBEANS
*/
// Variables declaration - do not modify
private javax.swing.JLabel jLabel2;
}
我这样用:
UIdostawca a = new UIdostawca();
a.loadStuff();
并且jLabel2没有改变;(
但是在执行时
jLabel2.setText("Works or not?");
在formWindowOpened
一切正常
答案 0 :(得分:4)
这是一个多线程问题。当调用formWindowOpened
时,它由Swing事件调度线程(EDT)调用,该线程与绘制接口的线程相同,因此它具有正确的文本值。
如果您从其他某个主题调用setText
,则EDT可能无法获得正确的文本值。无论你在其他线程中调用setText
,都必须将其包装在SwingUtilities.invokeLater()
中,这将改变EDT上的文本值。
答案 1 :(得分:0)
在第一种情况下,您是否初始化了jLabel2?