java - JTable 和 JScrollPane 未按应有的方式显示
问题描述
为什么这不起作用(不在 GUI 中显示)
JTable table=new JTable(20,20);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane tableScrollPane=new JScrollPane(table);
tableScrollPane.setBounds(10,70,540,280);
tableScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
tableScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
add(tableScrollPane);
而这确实(确实显示在 GUI 中)。
JTable table=new JTable(20,20);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane tableScrollPane=new JScrollPane();
tableScrollPane.setBounds(10,70,540,280);
tableScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
tableScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
tableScrollPane.add(table);
add(tableScrollPane);
为什么会这样,他们不应该做同样的事情吗?
解决方案
为什么会这样,他们不应该做同样的事情吗?
不。
JScrollPane 包含许多组件,包括滚动条和视口,并使用其自己的内部布局管理器来设置每个组件的位置。您不能只是将组件“添加”到滚动窗格,因为布局管理器不支持这一点。
阅读 Swing 教程中有关滚动窗格如何工作的部分以获取更多信息。
需要将组件(在本例中为 JTable)添加到滚动窗格的“视口”。
您可以使用:
JScrollPane scrollPane = new JScrollPane( table );
或者
JScrollPane scrollPane = new JScrollPane( );
scrollPanwe.setViewportView( table );
推荐阅读
- app-inventor - 我想使用应用发明者应用发明者为安卓制作一个聊天应用程序
- python - Python:无法获得我的代码的输出。每当我输入数组元素时,它都无法选择数组元素作为答案
- javascript - 选定的 html 标记添加复选框并获取项目值
- javascript - 如何将 Video.js 按钮合并为一个
- python - PyDrive 在 Google Drive 中创建文件夹 - 错误为 AttributeError:“GoogleDrive”对象没有属性“文件”
- azure-devops - Azure DevOps API 从多阶段管道运行单阶段
- google-cloud-platform - HTTP Cloud Function 返回 500 但日志中没有错误
- javascript - 使用 _parent 目标从子 IFRAME 重定向到父 IFRAME 在 FIREFOX 中不起作用
- javascript - 如何在组件中渲染异步结果(数组)?
- angular - 如何添加应用按钮以进行角度过滤?