JScrollPane不添加滚动条动态增长table

JScrollPane does not add scroll bars to dynamically growing table

我有一个 table 随着用户输入数据而增长。我想要做的是将 table 放入某种类型的容器中,并添加一个滚动条,该滚动条在滚动时手动移动容器的视图。我不想使用 JScrollPane,因为过去几天我一直在煞费苦心地尝试让它工作。我刚刚发现它不适用于 null 布局,这似乎是唯一允许我的 table 正常打印的布局。因此,我放弃了 JScrollPane 的想法,而是尝试自己实现编程滚动条的想法,将视图转移到溢出的容器内。到目前为止,我在网上找不到任何可以改变 java 容器视图的东西。关于如何执行此操作的任何想法?

更新:

根据建议,我将尝试使用 JScrollPane 进行滚动。所以新的问题是:为什么下面的代码不起作用?

背景:DataTable 是我设计的 class 扩展 java.awt.Container,它包含一个充满 JLabel 的网格。 class 包含增加容器大小以添加单元格的 addRow 和 addCol 等方法,class 还包含设置标签值的方法。

我想做的是将我的 class 放在具有静态宽度和高度的 JScrollPane 中,可以滚动以查看整个 table 随着它的增长。

DataTable table = new DataTable(1,4,100,30); //creates table with 1 row (30px tall) and 4 columns (100px wide each)
table.setLocation(0, 0);
JScrollPane scroll = new JScrollPane(table);//scroll pane
scroll.setLayout(null);
scroll.setBounds(10, 50, 500, 100);
scroll.add(table);
Frame frame = new Frame();
frame.add(scroll);
frame.setLayout(null);
frame.setSize(600, 500);
frame.setVisible(true);
for ( int i=0 ; i<20 ; i++ ) {
    table.addRow();//add twenty rows to table
}

当我运行这段代码时,没有滚动条出现。为什么?我该如何解决这个问题? (即使我删除了将 JSrollPane 的布局设置为 null 的行,代码仍然不起作用。事实上,table 根本没有出现)。

我没能找到问题所在,所以我使用 java.awt.ScrollPane 找到了替代解决方案。我对 DataTable 所做的唯一更改是它现在扩展了 java.awt.Panel.

DataTable table = new DataTable(1,4,100,30); //creates table with 1 row (30px tall) and 4 columns (100px wide each)
//table extends java.awt.Panel and it consists a 2D array of Labels which contain text
//class has methods for adding rows and cols, and methods for setting values etc.
table.setLocation(0, 0);
ScrollPane scroll = new ScrollPane();//scroll pane
scroll.setBounds(10, 50, 500, 100);
scroll.add(table);
Frame frame = new Frame();
frame.add(scroll);
frame.setLayout(null);
frame.setSize(600, 500);
frame.setVisible(true);
for ( int i=0 ; i<20 ; i++ ) {
    table.addRow();//add twenty rows to table
}