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);
  }
}
  • 确保您仅在事件调度线程的上下文中创建/修改UI。有关更多详细信息,请参阅初始线程
  • 只有在建立了基本UI之后,才能调用packsetVisible

切勿使用pack()。。它有conner案例。。有时它会失败。通过实验,我学会了总是在调用setVisible(true)之前调用repaint(),这永远不会失败。在调用setVisible(true)之前立即调用repaint()--这从未失败。

  repaint();
  setVisible(true);  // assured NEVER FAILS.

最新更新