gpt4 book ai didi

java - 如何使 jtable 单元格监听来自另一个单元格的更改

转载 作者:行者123 更新时间:2023-12-04 05:46:47 25 4
gpt4 key购买 nike

请帮忙。我有来自 jtable 的两个单元格,一个 ID 和一个描述。 ID 和描述都是自定义组合框。我想要做的是当 ID 失去焦点或更改其值时,描述将根据 ID 上的值更新。我该怎么做?

这是我实现两个单元格的代码:

TableColumn subAccountCol = jTable1.getColumnModel().getColumn(table.findColumn("SubAccount"));

javax.swing.JComboBox accountCbx = new javax.swing.JComboBox(Account.toArray());
javax.swing.JComboBox accountDescCbx = new javax.swing.JComboBox(AccountDesc.toArray());

CompleteText.enable(accountCbx);
CompleteText.enable(accountDescCbx);

jTable1.getColumnModel().getColumn(table.findColumn("Account")).setCellEditor(new ComboBoxCellEditor(accountCbx));
jTable1.getColumnModel().getColumn(table.findColumn("Account Description")).setCellEditor(new ComboBoxCellEditor(accountDescCbx));

最佳答案

单元格编辑器将最终调用方法 setValueAt()在你的 table 模型上。在这个表模型中,除了更新已编辑的单元格值之外,只需更新链接的单元格值,并为两个单元格触发适当的更改事件。

public MyTableModel extends AbstractTableModel() {
// ...

// modifies the value for the given cell
@Override
public void setValueAt(Object value, int row, int column) {
Foo foo = this.list.get(row);
if (column == INDEX_OF_ID_COLUMN) {
foo.setId(value); // change the ID
fireTableCellUpdated(row, column); // signal the the ID has changed
// and now also change the description
String newDescription = createNewDescription(value);
foo.setDescription(newDescription);
fireTableCellUpdated(row, INDEX_OF_DESCRIPTION_COLUMN); // signal the the description has changed
}
// ...
}
}

关于java - 如何使 jtable 单元格监听来自另一个单元格的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579844/

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