JTable setPreferredWidth 导致额外的列

JTable setPreferredWidth causing an extra column

这是我的代码

JTable table = new JTable(attributeValues, attributeNamesString);

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

for(int z=0;z<table.getColumnCount();z++){
    table.getColumnModel().getColumn(z).setMinWidth(100);
    table.getColumnModel().getColumn(z).setMaxWidth(100);
    table.getColumnModel().getColumn(z).setPreferredWidth(100);
}

不幸的是,当我 运行 这样做时,我在屏幕上看到了一个额外的列,它延伸到 window 大小。我不确定它来自哪里或如何修复它。

您确定这是由 table.getColumnModel().getColumn(z).setPreferredWidth(100); 调用引起的吗?我怀疑(虽然我自己没有尝试过)它更可能是由 table.getColumnModel().getColumn(z).setMaxWidth(100); 引起的,因为这设置了列的 maximum 宽度(总计 4 x 100px在你的情况下)而 table 本身被拉伸到超过 4 x 100px.

如果不希望table本身的宽度超过4 x 100px,是否可以不设置table的最大尺寸(http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setMaximumSize(java.awt.Dimension))?