好的,我有一个带有和JMenuBar
的GUI,当我加载它时,有时它不会显示,但如果我最小化它并单击它,JMenuBar
就会显示。我的问题在哪里?我该怎么修?哦,如果我将其重新调整为,则会出现JMenuBar
。
这是我的代码
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Main {
public static void main(String[] args){
JFrame frame = new JFrame("TwitchBot");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(700, 500));
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.pack();
frame.setVisible(true);
KeyGetter.LoadKeys();
try {
Config.loadConfig();
} catch (Exception e) {
e.printStackTrace();
}
JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("File");
mb.add(file);
JMenu edit = new JMenu("Edit");
mb.add(edit);
JMenuItem options = new JMenuItem("Options");
options.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Config.openConfig(frame);
}
});
frame.setJMenuBar(mb);
edit.add(options);
}
}
- 确保您仅在事件调度线程的上下文中创建/修改UI。有关更多详细信息,请参阅初始线程
- 只有在建立了基本UI之后,才能调用
pack
和setVisible
切勿使用pack()。。它有conner案例。。有时它会失败。通过实验,我学会了总是在调用setVisible(true)之前调用repaint(),这永远不会失败。在调用setVisible(true)之前立即调用repaint()--这从未失败。
repaint();
setVisible(true); // assured NEVER FAILS.