Java Swing JTable和JScrollPane以适合列宽

时间:2014-01-03 17:26:26

标签: java swing jtable jscrollpane

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

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

我尝试使用

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

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

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

其他信息: JTable是根据我实现的模型构建的,我修改的唯一GridBagConstraints是gridx,gridy和fill = BOTH。

table

1 个答案:

答案 0 :(得分:3)

请参阅Table Column Adjuster,以便轻松确定每列的大小。

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

table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );

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

  

所有列的宽度之和大于JScrollPane的宽度,因此不会发生任何事情,

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