Java GUI JMenuBar
Java GUI JMenuBar
好的,我有一个带有 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);
}
}
- 确保您 creating/modifying 您的 UI 仅来自事件调度线程的上下文。有关详细信息,请参阅 Initial Threads
- 仅在建立基础 UI 后调用
pack
和 setVisible
。
永远不要使用 pack() ..它有一些错误的案例..有时它会失败。从实验中我学会了总是在调用 setVisible(true) 之前调用 repaint() 这永远不会失败。在调用 setVisible(true) 之前调用 repaint()。--这永远不会失败。
repaint();
setVisible(true); // assured NEVER FAILS.
好的,我有一个带有 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);
}
}
- 确保您 creating/modifying 您的 UI 仅来自事件调度线程的上下文。有关详细信息,请参阅 Initial Threads
- 仅在建立基础 UI 后调用
pack
和setVisible
。
永远不要使用 pack() ..它有一些错误的案例..有时它会失败。从实验中我学会了总是在调用 setVisible(true) 之前调用 repaint() 这永远不会失败。在调用 setVisible(true) 之前调用 repaint()。--这永远不会失败。
repaint();
setVisible(true); // assured NEVER FAILS.