【发布时间】:2019-10-14 04:32:24
【问题描述】:
我想知道在用户更改后如何获取列宽,以便我可以保存它。
在搞砸之后,我想出了这个方法,但它并不完美。如果用户实际上并没有通过单击列的一行来选择列,则所选列是-1,因此会引发错误,所以我使用 if 语句阻止了它。
下一个问题是,如果我选择一列然后更改宽度,它会在我更改列时工作并打印出宽度,但如果我选择说第 3 列,然后继续更改第 2 列宽度而不选择行在第 2 列中,当我更改第 2 列时,它将继续吐出第 3 列的宽度。所以它使用 select 方法按预期工作,但必须有更好的方法来获取我所在的列的宽度变化。
有什么想法吗?
jt.getColumnModel().addColumnModelListener(new TableColumnModelListener() {
public void columnAdded(TableColumnModelEvent e) {
// TODO Auto-generated method stub
}
public void columnRemoved(TableColumnModelEvent e) {
// TODO Auto-generated method stub
}
public void columnMoved(TableColumnModelEvent e) {
// TODO Auto-generated method stub
}
public void columnMarginChanged(ChangeEvent e) {
int col = jt.getSelectedColumn();
if (col >= 0) {
TableColumn tc = jt.getColumnModel().getColumn(col);
System.out.println(tc.getWidth());
}
}
public void columnSelectionChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
}
});
【问题讨论】:
-
ChangeEvent的source是什么?希望是实际的列发生了变化... -
是的,但我如何从源更改中获取其宽度?它不像我可以做 e.getwidth()。我还是个 java 新手,哈哈
-
如果对象是列,您可以将传入的对象转换为列,然后调用通常对列进行的所有方法。
-
这个问题可能是重复的。有空请看这个答案:stackoverflow.com/questions/8752694/…
标签: java jtable column-width