我有一个使用swing接口的主类。我可以看到一个JScrollPane。我有一个actionlistener填充表,并应该将表添加到JScrollPane。但是当我初始化scrollPane时,我需要声明(表格示例)作为参数...无法弄清楚如何在填充后引用它。继承人代码:
JScrollPane callsScroll = new JScrollPane();
JPanel callsArea = new JPanel();
....
callsArea.add(callsScroll);
callsScroll.setPreferredSize(new Dimension(570, 400));
...
while (rs.next()) {
String columns[] = {"Employee ID", "Date", "Billing Type", "DR", "Call Time", "Trouble Code", "Invoice Amount", "Invoice Number"};
Object data[][]={
{rs.getString("EmployeeID"),rs.getString("Date"),rs.getString("BillingType"),
rs.getString("DR"),rs.getString("CallTime"),rs.getString("TroubleCode"),
rs.getString("InvoiceAmount"),rs.getString("InvoiceNumber")
},
};
JTable table = new JTable(data,columns);
gui.callsScroll.add(table);
gui.callsArea.add(gui.callsScroll);
}
我知道正在填充表格,因为我可以直接将其添加到JFrame中。但我不能先把它拿到桌子上。我需要能够在这里填充表之后引用该表的实例JScrollPane callsScroll = new JScrollPane(就在这里);
的 的 ** * ** * 修改的 * ** * ** * ** * ** * < / EM> *
Object[][] data=null;
while (rs.next()) {
data[][]={
{rs.getString("EmployeeID"),rs.getString("Date"),rs.getString("BillingType"),
rs.getString("DR"),rs.getString("CallTime"),rs.getString("TroubleCode"),
rs.getString("InvoiceAmount"),rs.getString("InvoiceNumber")},
};
}
答案 0 :(得分:4)
不要将组件直接添加到JScrollPane中,因为您将替换scrollpane的视口,这是滚动窗格功能的基本组件。相反,您应该将JTable添加到滚动窗格的视口:
myScrollpane.setViewportView(myJTable);
请注意,当您通过构造函数将组件添加到JScrollPane时,实际上是将它添加到视口中,这可能会混淆那些开始使用JScrollPanes的人。
此外,无需重新添加已添加到GUI的组件。