[英]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);
}
});
}
}
您實際上並沒有在PageOne
或PageTwo
面板中添加任何內容...
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);
}
記住, JPanel
是Container
類型,它可以具有子組件。
獲取框架的內容窗格,然后嘗試添加:
Container container=frame.getContentPane();
container.add(panel);
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.