【发布时间】:2011-12-17 23:27:30
【问题描述】:
如果我将代码从第一个示例更改为第二个示例,则不会显示任何内容(请参见屏幕截图:
主类:
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!"));
}
}
【问题讨论】:
-
不是我最好的语言,但我认为你的构造函数是私有的?
-
构造函数在 Java 中总是公开的(你不需要自己手动指定)。无论如何,这不是问题,多年来我一直在制作构造函数,没有任何私有/公共添加。
-
@Hidde:构造函数在 Java 中并不总是公开的。它们的可见性规则与方法的可见性规则相同。如果你没有可见性修饰符,构造函数是包保护的,而不是公共的。
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
这很奇怪,有时您的代码会按照您的预期给出正确的输出,但有时代码中没有任何变化。因此,您的 UI 外观和感觉似乎与它有关。
标签: java swing user-interface jtextfield event-dispatch-thread