我尝试设置列的宽度,但它根本不起作用,我一直在寻找答案几个小时,这是我的代码,任何人都可以告诉我问题是什么。提前致谢。
String [] columns = {"Day","StratTime","EndTime","Description"};
mtbl = new DefaultTableModel();
tbl = new JTable(mtbl);
jsPane = new JScrollPane(tbl);
tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int i = 0; i < Timedcolumns.length; i++) {
mtbl.addColumn(columns[i]);
tbl.getColumnModel().getColumn(i).setPreferredWidth(100);
}
后果addColumn()
, JTable
可能最终会重建所有的列。这是来自的一个片段JTable.tableChanged()
:
public void tableChanged(TableModelEvent e) {
if (e == null || e.getFirstRow() == TableModelEvent.HEADER_ROW) {
...
if (getAutoCreateColumnsFromModel()) {
// This will effect invalidation of the JTable and JTableHeader.
createDefaultColumnsFromModel();
return;
}
...
TableModelEvent.HEADER_ROW
因以下原因被解雇addColumn()
执行者DefaultTableModel
. addColumn
执行fireTableStructureChanged
:
public void fireTableStructureChanged() {
fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
}
您最终只能在添加的最后一列上设置首选大小,因为其余列是由createDefaultColumnsFromModel()
.
总而言之,在单独的循环中创建所有列后,设置首选大小可能更简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)