我有以下代码取自 GeeksforGeeks,它使用 JScrollPane 在 JTable 中显示二维数组的内容: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 的首选大小和最大大小,但无济于事——它总是占据整个屏幕并阻止 JButton 出现在屏幕上。此处不考虑设计,只考虑功能:让 JButton 出现在我的 JTable 下方。任何建议将不胜感激。先感谢您!
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
JFrame 的默认布局管理器是BorderLayout
.
f.add(sp); f.add(panel);
当您不指定约束时,BorderLayout
假定CENTER
。您只能将一个组件添加到CENTER
.
相反,您的代码应该是:
f.add(sp, BorderLayout.CENTER); f.add(panel, BorderLayout.PAGE_END);
请注意 a 的默认布局管理器JPanel
是FlowLayout
. 因此按钮将在面板中水平居中。
此外,不使用 JPanel,而是尝试将按钮直接添加到PAGE_END
框架中以查看差异。
阅读 Swing 教程中有关使用布局管理器的部分,了解更多信息和示例,以了解使用每种不同布局管理器的不同之处,以了解上述建议的差异。
编辑:
有没有办法降低桌子的高度
如果你知道你有一张小桌子,那么你可以使用:
table.setPreferredScrollableViewportSize(table.getPreferredSize());
这将使滚动窗格的大小与表格相同。
然后你使用:
//f.setSize(500, 200); f.pack();
现在所有组件都将以其首选大小显示。
添加回答
举报
0/150
提交
取消