gpt4 book ai didi

Java Swing : adding a JTextField (never used anywhere) randomly makes the screen go white

转载 作者:行者123 更新时间:2023-11-29 06:14:10 24 4
gpt4 key购买 nike

我正在使用 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);
}
}

最佳答案

对我有用,这让我认为这是一个 EDT 问题。将对 setVisible 的调用移至 main 方法的末尾。

来自此链接:http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html

此方法是线程安全的,尽管大多数 Swing 方法不是。 应用程序的 GUI 通常可以在主线程中构建和显示:只要没有实现组件(Swing 或其他),以下典型代码是安全的:

public class MyApplication {
public static void main(String[] args) {
JFrame f = new JFrame("Labels");
// Add components to
// the frame here...
f.pack();
f.show();
// Don't do any more GUI work here...
}
}

上面显示的所有代码都在“主”线程上运行。 f.pack() 调用实现了 JFrame 下的组件。这意味着,从技术上讲,f.show() 调用是不安全的,应该在事件调度线程中执行。但是,只要程序还没有可见的 GUI,JFrame 或其内容就极不可能在 f.show() 返回之前收到 paint() 调用。因为在 f.show() 调用之后没有 GUI 代码,所以所有 GUI 工作都从主线程转移到事件调度线程,并且前面的代码实际上是线程安全的。

关于Java Swing : adding a JTextField (never used anywhere) randomly makes the screen go white,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com