java - JPanel 不显示在 JFrame 上

标签 java swing

问题 - 下面给定的代码不显示我的 JPanel(PageOne),我不确定为什么它不显示我的 JPanel(PageOne)。请帮忙。

我已将 JPanel(PageOne) 添加到我的面板中,该面板具有 cardLayout(); 我已经将 JFrame 设置为可见。

PageOne.java

   import javax.swing.JLabel;
   import javax.swing.JPanel;

   public class PageOne extends JPanel {

    public PageOne() {
         JLabel label = new JLabel("Page 1");
         JPanel panel = new JPanel();
         panel.add(label);
   }    }

PageTwo.java

   import javax.swing.JLabel;
   import javax.swing.JPanel;

   public class PageTwo extends JPanel {

    public PageTwo() {
         JLabel label = new JLabel("Page 2");
         JPanel panel = new JPanel();
         panel.add(label);
       }
   }

DisplayUI.java

   import java.awt.CardLayout;
   import javax.swing.JFrame;  
   import javax.swing.JPanel;
   import javax.swing.SwingUtilities;

   public class DisplayUI {

    public static void main(String[] args) {
           new DisplayUI();
    }

       public DisplayUI() {
           SwingUtilities.invokeLater(new Runnable() {
           @Override
               public void run() {
                  CardLayout cardLayout = new CardLayout();
                   JFrame frame = new JFrame("frame");
                   JPanel panel = new JPanel();
                   panel.setLayout(cardLayout);    
                   panel.add(new PageOne(), "1");
                   panel.add(new PageTwo(), "2");
                   cardLayout.show(panel,"1");
                   frame.add(panel);
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.pack();
                   frame.setLocationRelativeTo(null);
                   frame.setVisible(true);
               }
           });
       }
   }

最佳答案

您实际上并没有向 PageOnePageTwo 面板添加任何内容...

public PageOne() {
    JLabel label = new JLabel("Page 1");
    JPanel panel = new JPanel();
    panel.add(label);
    // But nothing is actually added to "this"...
}

除非您“确实”需要它,否则您可以删除第二个 JPanel 并将 label 直接添加到 PageOne (并且PageTwo 也是如此)

public PageOne() {
    JLabel label = new JLabel("Page 1");
    add(label);
}

或者添加您创建的JPanel(其中包含标签)

public PageOne() {
    JLabel label = new JLabel("Page 1");
    JPanel panel = new JPanel();
    panel.add(label);
    add(panel);
}

记住,JPanelContainer的类型,它可以有子组件。

关于java - JPanel 不显示在 JFrame 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645902/

相关文章:

java - 测试网络文件夹是否存在

java - 为 JDaychooser Dates 添加特定的背景颜色

java - 使用 spring 的 SimpleJdbcCall 执行存储函数不给出输出

java - 要求用户输入遵循字符串格式

java - quickfix/field/HaltReason 不可分配给 'quickfix/IntField

java - JLabel 中的多行文本

java - addActionListener 中的递归?

java - 对动画进行分组以便顺序执行

java - 使用 Miglayout 缩放 JPanel

java - 数组问题 - 这条线是做什么的?