java - JScrollPane 不会为动态增长的表格添加滚动条

标签 java swing scroll scrollbars

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

更新:

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

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

我想要做的是将我的类放置在具有静态宽度和高度的 JScrollPane 中,可以滚动以查看整个表格的增长。

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 的行,代码仍然不起作用。事实上,表格根本不显示)。

最佳答案

我无法找到问题所在,因此我使用 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
}

关于java - JScrollPane 不会为动态增长的表格添加滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989164/

相关文章:

java - 如果 hashString 是纳米时间,Hashing.crc32 是否会生成一个唯一的字符串?

java - 如何使用 YUI Compressor 压缩多个 js 文件并保存到单个文件

javascript - ScrollFire Materialize 显示列表

java : convert long to Timestamp

java - Java 如何在非常小的设备上运行?

Java Swing 透明度绘制问题

java - JTable 未显示。我如何解决它?

java - 保存信息 - Swing 形状

scroll - Tailwind 无限水平滚动项目

javascript - 屏幕滚动后的 div 容器