Java SWING:随机添加一个JTextField(从未在任何地方使用)会使屏幕变白
||
我正在使用Eclipse在ubuntu 10.04上进行开发,并且当我在以下代码中添加
JTextField
(我不在任何地方使用或将其设为可见!)时,将窗口而不是显示类似的图像应该是空白。
有人知道这是什么原因吗?
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Testi {
public static void main(String[] args) {
ImageIcon icon1 = new ImageIcon(\"background.jpg\");
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700,500);
JPanel panel = new JPanel();
panel.setSize(600, 600);
panel.setOpaque(false);
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
JLabel label = new JLabel();
label.setSize(500, 500);
label.setIcon(icon1);
label.setLayout(new FlowLayout(FlowLayout.CENTER));
// FOLLOWING LINE IS THE PROBLEM: when in code, the screen goes white
JTextArea text1 = new JTextArea(\"asd\");
label.add(panel);
frame.add(label);
}
}
没有找到相关结果
已邀请:
1 个回复
绵扇寸访
到主方法的结尾。 通过此链接:http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html 尽管大多数Swing方法都不安全,但是此方法是线程安全的。 通常可以构造应用程序的GUI并将其显示在主线程中:只要没有实现组件(Swing或其他方式),以下典型代码是安全的:
上面显示的所有代码都在\“ main \”线程上运行。 f.pack()调用实现JFrame下的组件。从技术上讲,这意味着f.show()调用是不安全的,应在事件分发线程中执行。但是,只要程序还没有可见的GUI,则在f.show()返回之前,JFrame或其内容将不太可能收到paint()调用。因为在f.show()调用之后没有GUI代码,所以所有GUI工作都从主线程移动到事件分发线程,并且前面的代码实际上是线程安全的。