Java Swing JTable 和 JScrollPane 适合列宽

标签 java swing jtable jscrollpane

我是 Swing 的新手,我正在使用 JTable 对象来显示一些信息。 基本上该框架包含一个 JPanel -> GridBagLayout 管理器。 JPanel 包含一个 JLabel(“状态表”)、一个包含 JTable 的 JScrollPane、“排序依据”JButton 和一个 JComboBox。

如何设置列/列标题的宽度以完全显示其中包含的文本?

我尝试使用

table.getColumnModel().getColumn(i).setPreferredWidth(my_width); 

但问题是,为了达到我想要的结果,所有列的宽度总和大于 JScrollPane 的宽度,所以什么也不会发生,它们将保持与以前相同的效果。

我尝试使用 JScrollPane 的 setSize 方法来将其大小调整为与窗口一样大...但是由于 GridBagLayout 管理器,它似乎无法大于某个大小,这仍然没有适合文本。

附加信息: JTable 是根据我实现的模型构建的,我修改的唯一 GridBagConstraint 是 gridx、gridy 和 fill = BOTH。

table

最佳答案

请参阅Table Column Adjuster一种简单的方法来调整每列的大小。

仅应将表格添加到滚动 Pane 中。您可能还需要使用:

table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );

允许每列以其首选大小显示。

the sum of all the columns' widths is larger than the JScrollPane's width, so nothing will happen,

您的 gridbag 约束有问题。该组件应该增长以填充所有空间。也许使用 BorderLayout 会更容易。将滚动 Pane 添加到中心,并将其他组件添加到北/南。您可以使用不同的布局管理器嵌套面板以获得所需的布局。

关于Java Swing JTable 和 JScrollPane 适合列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909313/

相关文章:

java - vim 中的即时 Java 语法检查

java - 将 ActionListener 添加到 JButton

java - 我可以将 MouseMotionListener 添加到 Java 中的另一个线程吗?

java - setSelectionBackGround() 未在 jTable 中设置颜色

java - 如何在运行时使JTable列交换后JLabel仍然出现?

java - 为什么该项目已从数组中删除,但未从我的表中删除?

java - 从文本中查找字符对

java - Twisted 吞吐量限制降低

java - 如何更新 DefaultListModel 中项目的字符串名称

java - 是否有必要在DefaultTreeModel中调用nodesWereInserted()和类似方法?