[英]Java - Gui Components do not show up
我有這段代碼可以手動創建一個簡單的GUI,並且試圖在框架上顯示GUI組件。 但是,當我運行程序時,僅顯示框架而不顯示組件,例如JTable。
知道為什么嗎?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public void buildGui() {
JFrame frame = new JFrame("Hotel TV Scheduler");
frame.setVisible(true);
Container contentPane = frame.getContentPane();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
JPanel listPanel = new JPanel();
listPanel.setLayout(new FlowLayout());
JTable chOneTable = new JTable();
JTable chTwoTable = new JTable();
JTable listTable = new JTable();
listPanel.add(chOneTable);
listPanel.add(chTwoTable);
listPanel.add(listTable);
contentPane.add(listPanel);
}
}
您應該在JTables上設置preferredSize()
,然后再執行pack()
。
編輯:
將setVisible(true)
移動到pack()
。 這是Sun / Oracle使用的順序 。
public class GUI extends JFrame {
public void buildGui() {
JFrame frame = new JFrame("Hotel TV Scheduler");
Container contentPane = frame.getContentPane();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
JPanel listPanel = new JPanel();
listPanel.setLayout(new FlowLayout());
Dimension d = new Dimension(100, 100);
JTable chOneTable = new JTable();
chOneTable.setPreferredSize(d);
JTable chTwoTable = new JTable();
chTwoTable.setPreferredSize(d);
JTable listTable = new JTable();
listTable.setPreferredSize(d);
listPanel.add(chOneTable);
listPanel.add(chTwoTable);
listPanel.add(listTable);
contentPane.add(listPanel);
frame.pack();
frame.setVisible(true);
}
}
JFrame
實例 JFrame
實例 JFrame
實例(即setVisible(true)
) 顯示JFrame
實例時,沒有任何組件顯示的原因是因為在實現JFrame
實例后向其中添加了組件。 如果要顯示組件,請按照上述步驟操作,或者在buildGui
方法的末尾重新驗證/重新繪制容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.