public class GUI extends JFrame implements ActionListener {
...//some global variables
public GUI ()
{
super("Closest Word Automaton");
this.setSize(1000, 640);
this.setVisible(true);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setLayout(new CardLayout());
initArray();
JTabbedPane tabs = new JTabbedPane();
tabs.add("Edit View", createEditView());
tabs.add("Automaton View", createAutomatonView());
tabs.add("Levenshtein Distance Calculator", createLevCalculator());
this.add(tabs);
addListener();
}
我的 JFrame 有一个奇怪的问题,当我在 Eclipse 中运行该程序时,GUI 显示如下:http://i.imgur.com/hNtucMo.jpg这不应该发生,因为它应该是这样的:http://i.imgur.com/ph0TV3C.jpg但是,在我最小化然后恢复 Jframe 窗口后,问题自行解决。为什么会发生这种情况?我该如何修复它以在启动程序时立即正确显示 GUI?
(其他电脑也有这个问题)
最佳答案
添加所有组件后,将框架设置为可见。
public class GUI extends JFrame implements ActionListener {
...//some global variables
public GUI ()
{
super("Closest Word Automaton");
this.setSize(1000, 640);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setLayout(new CardLayout());
initArray();
JTabbedPane tabs = new JTabbedPane();
tabs.add("Edit View", createEditView());
tabs.add("Automaton View", createAutomatonView());
tabs.add("Levenshtein Distance Calculator", createLevCalculator());
this.add(tabs);
this.pack();
this.setVisible(true); //setVisible to true after adding components
addListener();
}
注意我也调用了 this.pack()
。这将导致 JFrame 的大小正确,因此其子组件的大小也正确,因此当您 setVisible(true)
时,它会正确显示。
关于Java JFrame,不立即显示内容,但在最小化+恢复后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324687/