gpt4 book ai didi

Java:为什么 JTable 不使用 TableCellEditor?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:56 27 4
gpt4 key购买 nike

MyTableCellEditor 的目的是使 JTable 单元格的行为类似于 Excel 单元格,IOW,单击单元格后输入值会覆盖而不是附加到现有值。我没想到下面的代码在第一遍就可以工作,但我确实希望在 getTableCellEditorComponent 和 getCellEditorValue 中遇到调试断点。为什么我使用 jTable 时没有调用 getTableCellEditorComponent 或 getCellEditorValue?

public class MyTable extends javax.swing.JFrame implements TableModelListener {
private static final MyTableCellEditor tableCellEditor =
new MyTableCellEditor();
...
public MyTable() {
initComponents();
jTable.getModel().addTableModelListener(MyTable.this);
...
private void initComponents() { // Generated by the Form Editor.
jTable = new javax.swing.JTable();
jTable.setCellEditor(tableCellEditor);
...
public class MyTableCellEditor extends AbstractCellEditor implements
TableCellEditor {
JComponent component = new JTextField();
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int rowIndex, int vColIndex) {
if (isSelected) {
((JTextField)component).selectAll();
}
((JTextField)component).setText((String)value);
return component;
}
public Object getCellEditorValue() {
return ((JTextField)component).getText();
}
}

最佳答案

setCellEditor(TableCellEditor) 仅为当前 Activity 单元格设置编辑器(并且一旦不再 Activity 就会丢失。您想调用 JTable。 setDefaultEditor() 为特定类设置默认编辑器。

jTable.setDefaultEditor(String.class, tableCellEditor);

或者,您可以通过 TableColumnModel 为列设置编辑器,例如

jTable.getColumnModel().getColumn(1).setCellEditor(tableCellEditor);

关于Java:为什么 JTable 不使用 TableCellEditor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077969/

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