Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JScrollPane中放置表格时遇到问题_Java_Swing_Jtable - Fatal编程技术网

Java 在JScrollPane中放置表格时遇到问题

Java 在JScrollPane中放置表格时遇到问题,java,swing,jtable,Java,Swing,Jtable,我有一个使用swing接口的主类。我可以看到一个JScrollPane。我有一个actionlistener,它填充了表,并且应该将表添加到JScrollPane中。但是,当我初始化滚动窗格时,我需要声明(表示例)作为参数…无法确定在填充滚动窗格后如何引用它。代码如下: JScrollPane callsScroll = new JScrollPane(); JPanel callsArea = new JPanel(); .... callsArea.add(callsScroll); ca

我有一个使用swing接口的主类。我可以看到一个JScrollPane。我有一个actionlistener,它填充了表,并且应该将表添加到JScrollPane中。但是,当我初始化滚动窗格时,我需要声明(表示例)作为参数…无法确定在填充滚动窗格后如何引用它。代码如下:

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=newjscrollpane(就在这里)

*********编辑***************

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")},
             };







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

myScrollpane.setViewportView(myJTable);
请注意,当您通过其构造函数将组件添加到JScrollPane时,实际上是将其添加到视口中,这可能会让刚开始使用JScrollPanes的人感到困惑

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

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

myScrollpane.setViewportView(myJTable);
请注意,当您通过其构造函数将组件添加到JScrollPane时,实际上是将其添加到视口中,这可能会让刚开始使用JScrollPanes的人感到困惑


另外,不需要重新添加已经添加到GUI中的组件。

@derek:顺便说一句,不要调用
setPreferredSize()
;按照建议重写
getPreferredScrollableViewportSize()
。我认为冗余是不必要的,但我只是希望能有点效果。谢谢你的回复。成功了。但是,现在我在引用while循环中创建的二维对象数组时遇到问题。我尝试在循环之前初始化变量,但它说循环中的表达式开始非法?我会把我的作品附在节目后面。谢谢你,垃圾上帝。我现在已经是学习java的第三周/第四周了,我仍然在学习所有推荐的语言practices@derek:您的对象引用是一个明显且不相关的问题,可能应该在新问题中提出。很可能您的作用域有问题,2D数组是在方法或其他块内声明的,因此只能在该方法或块内可见。@derek:顺便说一句,不要调用
setPreferredSize()
;按照建议重写
getPreferredScrollableViewportSize()
。我认为冗余是不必要的,但我只是希望能有点效果。谢谢你的回复。成功了。但是,现在我在引用while循环中创建的二维对象数组时遇到问题。我尝试在循环之前初始化变量,但它说循环中的表达式开始非法?我会把我的作品附在节目后面。谢谢你,垃圾上帝。我现在已经是学习java的第三周/第四周了,我仍然在学习所有推荐的语言practices@derek:您的对象引用是一个明显且不相关的问题,可能应该在新问题中提出。很可能存在范围问题,2D数组在方法或其他块内声明,因此仅在该方法或块内可见。