Java JTable,表格单元格超出帧(滚动条)未显示

Java JTable,表格单元格超出帧(滚动条)未显示,java,swing,Java,Swing,我有一个与GUI应用程序窗口一样大的Jscrollpane,在这个滚动窗格中,我有一个gridbaglout显示用户动态生成的表。如果桌子太多,窗户就不够大。因此,在滚动窗格中,一些表不在窗口视图中,当我向下查看时,这些表的单元格不显示。一旦我点击它们,它们就会出现 当我向上滚动时,顶部表格的单元格也出现了,再次单击它们时,它们再次出现。如果再次看不见,点击的细胞不会消失 我读过一些关于tablerenderer的文章,但无法让它工作,甚至不知道tablerenderer是否是我想要的 生成表的

我有一个与GUI应用程序窗口一样大的Jscrollpane,在这个滚动窗格中,我有一个gridbaglout显示用户动态生成的表。如果桌子太多,窗户就不够大。因此,在滚动窗格中,一些表不在窗口视图中,当我向下查看时,这些表的单元格不显示。一旦我点击它们,它们就会出现

当我向上滚动时,顶部表格的单元格也出现了,再次单击它们时,它们再次出现。如果再次看不见,点击的细胞不会消失

我读过一些关于tablerenderer的文章,但无法让它工作,甚至不知道tablerenderer是否是我想要的

生成表的代码

 //This code is in a for loop the object 'JTable table;' is a private property. 
 //declared at the top of the class, and 'table' is being instanciated in the for loop.
 table = new JTable();
 DefaultTableModel model = new DefaultTableModel();
 model.addColumn(colName,colVal); //colname and val are calculated above -> unnecessary to show.
 table.setModel(model);

 //Table is being added to gridbaglayout, etc...

有点晚了,但找到了解决我问题的办法

每当我滚动时,我会重新绘制,因此表格会被重新绘制,不再有空行

scrollPane.getViewport().addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            repaint();
        }
    });

该表需要添加到自己的JScrollpane中