gpt4 book ai didi

java - 为什么 JTable 不显示用户输入?

转载 作者:行者123 更新时间:2023-12-01 15:24:06 25 4
gpt4 key购买 nike

MyTableCellEditor 需要向 JTable 添加覆盖编辑(如 Excel 单元格)和数据输入规则(parseDouble)。当用户单击另一个单元格时,为什么该单元格会删除用户输入的值?IOW:输入单元格的值是可见的,直到单击另一个单元格,然后它就消失了。逐步执行该程序,当用户编辑单元格值时调用 getTableCellEditorComponent,当单元格编辑完成时调用 getCellEditorValue。

public class MyTableFrame extends javax.swing.JFrame 
implements TableModelListener {
private static TableColumn column2;

public MyTableFrame() {
initComponents();
...
column2 = jTable.getColumnModel().getColumn(2);
column2.setCellEditor(new MyTableCellEditor());
jTable.getModel().addTableModelListener(this);
}
}

public class MyTableCellEditor extends AbstractCellEditor implements
TableCellEditor {

// Component to handle the editing of a cell value
private JTextField component = new JTextField();
// Return value
private Object value;
private DefaultTableModel model;
private int rowIndex;
private int columnIndex;

public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int rowIndex, int columnIndex) {
model = (DefaultTableModel) table.getModel();
this.value = value;
this.rowIndex = rowIndex;
this.columnIndex = columnIndex;
component.setText("");
return component;
}

public Object getCellEditorValue() {
try {
return Double.parseDouble(model.getValueAt(rowIndex, columnIndex)
.toString());
} catch (Exception ex) {
return value;
}
}
}

最佳答案

我猜条目是在编辑完成后进入模型的。因此,在 getCellEditorValue() 中从模型获取值将为您提供编辑前的值。

您应该使用 component.getText() 来获取值。

 return Double.parseDouble(component.getText())

关于java - 为什么 JTable 不显示用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433100/

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