gpt4 book ai didi

java - 用户更改后如何获取 Jtable 的列宽

转载 作者:行者123 更新时间:2023-12-02 05:06:40 26 4
gpt4 key购买 nike

我想知道用户更改列宽后如何获取列宽,以便我可以保存它。

经过一番折腾,我想出了这个方法,但它并不完美。如果用户实际上没有通过单击列中的一行来选择列,则所选列为 -1,从而引发错误,因此我使用 if 语句阻止了这种情况。

下一个问题是,如果我选择一列然后更改宽度,它会在我更改列时工作并打印出宽度,但如果我选择了第 3 列,然后继续更改第 2 列宽度而不选择行在第 2 列中,当我更改第 2 列时,它将继续吐出第 3 列的宽度。因此它使用选择方法按预期工作,但必须有更好的方法来获取我所在列的宽度改变。

有什么想法吗?

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 的源强制转换为 TableColumn

当您有时间时,请在 TableColumnModelListener 中尝试以下操作...

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) {

Object source = e.getSource();
if (source instanceof TableColumn) {

TableColumn tableColumn = (TableColumn) source;

System.out.println(tableColumn.getWidth());
}
}

public void columnSelectionChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
}
});

关于java - 用户更改后如何获取 Jtable 的列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56345713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com