没有显示错误,但看不到 JButton 和 Label

No error shown but JButton and Label can't be seen

我是编码新手,我遇到了这个问题,它没有显示我在 GUI 中添加的 JButton 和 JLabel。我做错了什么,我该如何解决?

    import java.awt.ComponentOrientation;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;

   public class MainMenu {

public static void main (String []args) { 

    JFrame frame = new JFrame ("Main Menu");
    frame.setSize(480,720);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(3,2,5,5));
    JButton meals = new JButton ("Meals");
    JLabel label = new JLabel ("Welcome back!");
    panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    panel.add(meals);
    panel.add(label);
    frame.add(panel);
}


}

发生这种情况是因为您 frame.setVisible(true); 在向其中添加任何组件之前。您应该先将组件添加到框架中,然后使用 setVisible 方法。

panel.add(meals);
panel.add(label);
frame.add(panel);
frame.setVisible(true); //visible after components added

以下代码的固定版本。希望它有效。我在 IDE.

中对其进行了测试

import java.awt.ComponentOrientation;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;

public class MainMenu {

    public static void main(String[] args) {

        JFrame frame = new JFrame("Main Menu");

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2, 5, 5));
        JButton meals = new JButton("Meals");
        JLabel label = new JLabel("Welcome back!");
        panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
        panel.add(meals);
        panel.add(label);
        frame.add(panel);

        frame.setSize(480, 720);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}