Java JTable-won';不要在JScrollPane中滚动

Java JTable-won';不要在JScrollPane中滚动,java,swing,scroll,jtable,jscrollpane,Java,Swing,Scroll,Jtable,Jscrollpane,我一直很难让表格滚动;只是不会。我已经看过了其他的堆栈答案,并尝试了它们,但它们不起作用;我不确定我是否与这些解决方案有冲突 tableModel = new TableModel(); //Custom Table Model table = new JTable(); table.setBorder(null); table.setFillsViewportHeight(true); table.setModel(tableModel); JScrollPane tblScrollPane

我一直很难让表格滚动;只是不会。我已经看过了其他的堆栈答案,并尝试了它们,但它们不起作用;我不确定我是否与这些解决方案有冲突

tableModel = new TableModel(); //Custom Table Model
table = new JTable();
table.setBorder(null);
table.setFillsViewportHeight(true);
table.setModel(tableModel);

JScrollPane tblScrollPane = new JScrollPane(table);
tblScrollPane.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
tblScrollPane.setBounds(245, 17, 560, 425);
frmServerAdministration.getContentPane().add(tblScrollPane);
编辑:更多信息

因此,一个窗口打开,这是服务器程序。客户端程序连接到服务器,当它们连接到服务器时,会在my table model类中触发一个方法,该方法会向表中添加新行。(我可以看到行)然后在该方法的末尾,它调用另一个方法,但在ScrollPane中没有任何更改。我需要重新粉刷吗

updateTableScroll()

编辑2:想法

因此,在Eclipse中,我使用WindowBuilder制作GUI,下面的for循环将显示带有滚动条的表!但是当我在另一个点运行相同的addClient()方法时,滚动条将不会出现

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Server window = new Server();
                window.frmServerAdministration.setVisible(true);
                for(int i = 0; i < 20; i++){
                    tableModel.addClient(i, String.valueOf(i));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
publicstaticvoidmain(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
服务器窗口=新服务器();
window.frmServerAdministration.setVisible(true);
对于(int i=0;i<20;i++){
tableModel.addClient(i,String.valueOf(i));
}
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
代替
setBounds()
,按照建议覆盖
getPreferredScrollableViewportSize()
,并覆盖
pack()
封闭的顶级容器。此外,作者“建议您将组件放在
JPanel
中,并在
JPanel
上设置边框”


附录:当
JTable
侦听其
TableModel
时,请验证是否从模型中触发了正确的事件。如果您进行扩展,其中一个
fireTableXxx()
方法将是合适的。

我所需要做的就是在添加数据后调用它(我对表模型非常陌生:p)
此.firetablestructure()已更改

这看起来很有用,但我真的听不懂。你能详细说明一下吗?还有,JPanel上有哪些组件?下面是一个完整的例子;如果没有帮助,请编辑你的问题,包括一个能显示你遇到的任何问题。我真诚地感谢你的帮助。我试图制作一个sscce,但我有很多代码,所以在这个例子中,我复制和粘贴代码,但它在这个例子中起作用。UG验证自定义表模型是否触发了正确的事件以通知表。
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Server window = new Server();
                window.frmServerAdministration.setVisible(true);
                for(int i = 0; i < 20; i++){
                    tableModel.addClient(i, String.valueOf(i));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}