Search code examples
javaswingjframeactionlistener

How to fix the display of elements using Swing in Java


I'm working on an application using Swing in Java, however, I have a weird problem in the display, my code works perfectly fine, but the output is weird. When I run the program. The JFrame looks empty or something is missing (JMenuBar, JMenuItem, etc are invisible), then I maximize the screen, and all other stuff becomes visible, then I minimize the screen and it looks visible. I'm pretty sure that the code works fine, it's just a display problem. Can anyone help so that the first display looks fine?

Here is the code


    JFrame frame = new JFrame("Menu");
    frame.setVisible(true);
    frame.setSize(400,200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JMenuBar menubar = new JMenuBar();
    frame.setJMenuBar(menubar);

    JMenu file = new JMenu("File");
    menubar.add(file);

    JMenuItem exit = new JMenuItem("Exit");
    file.add(exit);


    JMenu help = new JMenu("Help");
    menubar.add(help);
    JMenuItem about = new JMenuItem("About");
    help.add(about);

    class exitaction implements ActionListener {

        public void actionPerformed (ActionEvent e) {
            System.exit(0);
        }
    }
    exit.addActionListener(new exitaction());

}






Solution

  • Put the code below at the end. It'll work fine.

    The method setVisible is an action, just like show() before JDK 1.5.

    frame.setVisible(true);