我有以下代碼取自 GeeksforGeeks,它使用 JScrollPane 在 JTable 中顯示二維數(shù)組的內(nèi)容:public class JTableExamples { // frame JFrame f; // Table JTable j; // Constructor JTableExamples() { // Frame initiallization f = new JFrame(); // Frame Title f.setTitle("JTable Example"); // Data to be displayed in the JTable String[][] data = { { "Kundan Kumar Jha", "4031", "CSE" }, { "Anand Jha", "6014", "IT" } }; // Column Names String[] columnNames = { "Name", "Roll Number", "Department" }; // Initializing the JTable j = new JTable(data, columnNames); j.setBounds(30, 40, 200, 300); // adding it to JScrollPane JScrollPane sp = new JScrollPane(j); f.add(sp); // Frame Size f.setSize(500, 200); // Frame Visible = true f.setVisible(true); } 我想做的是在表格下方添加一個簡單的組件(如 JButton),但它似乎不起作用。我嘗試通過將 JButton 添加到 JPanel 并將 JPanel 添加到框架來修改代碼: JButton button = new JButton("Back"); JPanel panel = new JPanel(); panel.add(button); f.add(sp); f.add(panel); 但這只是刪除整個表格并用一個按鈕替換它。我還嘗試將按鈕添加到 JPanel 并將該 JPanel 添加到 JScrollPane: JButton button = new JButton("Back"); JPanel panel = new JPanel(); panel.add(button); sp.add(panel); f.add(sp);但這似乎并沒有改變什么。我還嘗試修改 JScrollPanel 的首選大小和最大大小,但無濟(jì)于事——它總是占據(jù)整個屏幕并阻止 JButton 出現(xiàn)在屏幕上。此處不考慮設(shè)計(jì),只考慮功能:讓 JButton 出現(xiàn)在我的 JTable 下方。任何建議將不勝感激。先感謝您!
1 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊
JFrame 的默認(rèn)布局管理器是BorderLayout
.
f.add(sp); f.add(panel);
當(dāng)您不指定約束時,BorderLayout
假定CENTER
。您只能將一個組件添加到CENTER
.
相反,您的代碼應(yīng)該是:
f.add(sp, BorderLayout.CENTER); f.add(panel, BorderLayout.PAGE_END);
請注意 a 的默認(rèn)布局管理器JPanel
是FlowLayout
. 因此按鈕將在面板中水平居中。
此外,不使用 JPanel,而是嘗試將按鈕直接添加到PAGE_END
框架中以查看差異。
閱讀 Swing 教程中有關(guān)使用布局管理器的部分,了解更多信息和示例,以了解使用每種不同布局管理器的不同之處,以了解上述建議的差異。
編輯:
有沒有辦法降低桌子的高度
如果你知道你有一張小桌子,那么你可以使用:
table.setPreferredScrollableViewportSize(table.getPreferredSize());
這將使?jié)L動窗格的大小與表格相同。
然后你使用:
//f.setSize(500, 200); f.pack();
現(xiàn)在所有組件都將以其首選大小顯示。
添加回答
舉報
0/150
提交
取消