gpt4 book ai didi

java - 添加 JTextField 时不显示任何内容

转载 作者:行者123 更新时间:2023-11-30 04:55:57 25 4
gpt4 key购买 nike

如果我将代码从第一个示例更改为第二个示例,则不会显示任何内容(请参阅屏幕截图:

主类:

public class Main extends JTabbedPane {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
JFrame.setDefaultLookAndFeelDecorated(true);

JFrame f = new JFrame("Math");
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int x = dim.getWidth() > 800 ? (int) (dim.getWidth() / 2 - 400) : 0;
int y = dim.getWidth() > 800 ? (int) (dim.getHeight() / 2 - 300) : 0;
f.setBounds(x, y, 800, 600);
f.setResizable(false);
f.setContentPane(new Main());
}

Main() {
super();
addTab("Pythagoras", new Pythagoras());
}
}

毕达哥拉斯(截图 1):

public class Pythagoras extends JPanel{

Pythagoras() {
super();
setLayout(new FlowLayout());
JTextField j = new JTextField("Hi :)");
add(j);
}
}

毕达哥拉斯(截图 2):

public class Pythagoras extends JPanel{

Pythagoras() {
super();
setLayout(new FlowLayout());
}
}

毕达哥拉斯(截图 3):

public class Pythagoras extends JPanel{

Pythagoras() {
super();
setLayout(new FlowLayout());
add( new JLabel("This works!"));
}
}

Screenshot 1 Screenshot 2 Screenshot 3

最佳答案

始终在事件调度线程中使用 Swing 组件。 main方法的整个代码应该被包装到

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// original code here
}
});

此更改使一切在我的测试中都按预期显示。

阅读http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.htmlhttp://docs.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading

另外,请注意,仅采用 String 作为参数的 JTextField 构造函数会创建一个列数为 0 的文本字段。

关于java - 添加 JTextField 时不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548698/

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