如何在JFrame中显示两个JTable

时间:2010-11-04 18:37:08

标签: java swing jtable jscrollpane

我想在一个窗口中显示两个JTable。目前我只能使用以下方式显示其中一个表:

JTable table1 = makeTable(1);
JTable table2 = makeTable(2);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JScrollPane scrollPane1 = new JScrollPane(table1);
JScrollPane scrollPane2 = new JScrollPane(table2);
frame.add(scrollPane1, BorderLayout.CENTER);
frame.validate();
frame.add(scrollPane1, BorderLayout.CENTER);
//frame.add(scrollPane2, BorderLayout.CENTER);
frame.setSize(700, 500);

frame.setVisible(true);
frame.validate();

使用Swing显示多个表格的最简单方法是什么,一个在另一个之上(虽然方向是不可取的)?

2 个答案:

答案 0 :(得分:4)

您无法将两个JTable添加到BorderLayout中的相同位置。

您可以做的是:

frame.add(scrollPane1, BorderLayout.CENTER);
frame.add(scrollPane2, BorderLayout.SOUTH);
frame.validate();

答案 1 :(得分:2)

在Prine的帮助下,我找到了满足我需求的解决方案。对于任何寻找基本方案来实现这种布局的人来说:

JTable table1 = makeTable(1);
JTable table2 = makeTable(2);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = frame.getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
c.add(table1.getTableHeader());
c.add(table1);
c.add(table2.getTableHeader());
c.add(table2);
frame.pack();
frame.setVisible(true);