如何使用JTable上的TableColumnAdjuster获取最大列宽

TableColumnAdjuster是一个很棒的工具,但我似乎无法让表格显示每个列的完整宽度。 我看不到整个标题,有时可能会很长。

这是我有的:

 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); TableColumnAdjuster tca = new TableColumnAdjuster(table); tca.adjustColumns(); tca.setColumnHeaderIncluded(true); tca.setColumnDataIncluded(true); tca.setOnlyAdjustLarger( true ); tca.setDynamicAdjustment( false ); 

但除非我手动resize,否则列标题部分隐藏。 有关如何显示列的整个宽度的任何想法,以便我可以看到整个标题?

 setDynamicAdjustment(true); //false will work for the static data you might wann change it to `true`. 

在设置属性后,在最后调用adjustColumns()

TableColumnAdjuster的默认行为是在确定列宽时包括标头和数据。 无需更改任何财产。

这是一个简单的SSCCE,需要5分钟才能创建并轻松演示TableColumnAdjuster的默认值:

 import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class SSCCE extends JPanel { public SSCCE() { setLayout( new BorderLayout() ); String[] columnNames = {"Column1", "Column with big header text", "Column3"}; DefaultTableModel model = new DefaultTableModel(columnNames, 3); model.setValueAt("column1 data", 0, 0); model.setValueAt("column2 data", 1, 1); model.setValueAt("column3 long data", 2, 2); JTable table = new JTable( model ); add( new JScrollPane( table ) ); // use default behaviour table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); TableColumnAdjuster tca = new TableColumnAdjuster(table); tca.adjustColumns(); } private static void createAndShowGUI() { JFrame frame = new JFrame("SSCCE"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new SSCCE()); frame.setLocationByPlatform( true ); frame.pack(); frame.setVisible( true ); } public static void main(String[] args) { EventQueue.invokeLater( () -> createAndShowGUI() ); /* EventQueue.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); */ } } 

这段代码工作正常,所以问题是为什么它对你不起作用?

你有什么不同的做法? 您的使用是否导致代码中的错误?

解决方案是您接受了正确的解决方案还是有更好的解决方案?

问题是OS版本/平台问题吗?

除非我们能看到您的SSCCE,否则我们无法回答任何这些问题。