gpt4 book ai didi

java - JTable 中的 JComboBox 不会在项目更改时立即更新表

转载 作者:行者123 更新时间:2023-12-02 01:51:35 25 4
gpt4 key购买 nike

我有一个 JTable,其中 JComboBoxes 作为其中一列的单元格编辑器。当用户单击组合框中的某个选项时,表格单元格应立即设置为从组合框中选择的任何选项。但遗憾的是,直到用户单击其他位置或按 Enter 键后,这种情况才会发生。

我知道我可以从组合框中获取值,但我想在从表中的任何组合框中选择一个选项后立即将表保存到文件中,并且我一直无法找到动态识别组合框属于哪一行的方法,以便可以在项目更改时更新表。

有没有办法让表在组合框项监听器被触发后立即更新为所选值?

以下是演示此问题的示例:

public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setSize(450, 250);

JTable table = new JTable(2, 1);

TableColumn testColumn = table.getColumnModel().getColumn(0);

JComboBox<String> comboBox = new JComboBox<String>();
comboBox.addItem("Item1");
comboBox.addItem("Item2");
comboBox.addItem("Item3");
testColumn.setCellEditor(new DefaultCellEditor(comboBox));

comboBox.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED){
System.out.println(table.getValueAt(0, 0));
}
}
});

frame.add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

最佳答案

Is there a way to get the table to update with the chosen value as soon as the combobox item listener is fired?

不要依赖于 ItemListener(或 ActionListener)。这些事件仅表明组合框的所选项目已更改。

现在编辑器将取得控制权并将其自身从表中删除,并使用所选值更新 TableModel

如果您想知道 TableModel 中的数据何时发生更改,请向 TableModel 添加一个 TableModelListener

将生成一个TableModelEvent,指示数据已更改。

参见:JTable -> TableModeListener举一个简单的例子。

关于java - JTable 中的 JComboBox 不会在项目更改时立即更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911705/

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