簡體   English   中英

JPanel不顯示在JFrame上

[英]JPanel does not displayed on JFrame

問題-以下給定的代碼未顯示我的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來說也是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類型,它可以具有子組件。

獲取框架的內容窗格,然后嘗試添加:

Container container=frame.getContentPane();
container.add(panel);

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM