Как отобразить две JTables в JFrame - PullRequest
2 голосов
/ 04 ноября 2010

У меня есть две JTables, которые я хотел бы отобразить в одном окне. В настоящее время я могу отображать только одну из таблиц, используя:

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 ]

4 голосов
/ 04 ноября 2010

Вы не можете добавить обе JTables в одну и ту же позицию в BorderLayout.

Вы можете сделать следующее:

frame.add(scrollPane1, BorderLayout.CENTER);
frame.add(scrollPane2, BorderLayout.SOUTH);
frame.validate();
2 голосов
/ 04 ноября 2010

С помощью 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);
...