【问题标题】:No error shown but JButton and Label can't be seen未显示错误但看不到 JButton 和 Label
【发布时间】:2020-09-02 13:53:54
【问题描述】:

我是编码新手,我遇到了这个问题,它没有显示我在 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);
}


}

【问题讨论】:

    标签: java swing jpanel jbutton jlabel


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您的代码的固定版本如下。希望它有效。我在我的 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);
          }
      
      }
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-22
        • 1970-01-01
        相关资源
        最近更新 更多