将表放在JScrollPane中时遇到问题

时间:2013-05-05 02:33:57

标签: java swing jtable

我有一个使用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")},
             };







    }

1 个答案:

答案 0 :(得分:4)

不要将组件直接添加到JScrollPane中,因为您将替换scrollpane的视口,这是滚动窗格功能的基本组件。相反,您应该将JTable添加到滚动窗格的视口:

myScrollpane.setViewportView(myJTable);

请注意,当您通过构造函数将组件添加到JScrollPane时,实际上是将它添加到视口中,这可能会混淆那些开始使用JScrollPanes的人。

此外,无需重新添加已添加到GUI的组件。