gpt4 book ai didi

java - Swing:一列的多个 CellEditor

转载 作者:行者123 更新时间:2023-12-03 18:28:29 25 4
gpt4 key购买 nike

在我的 JTable 中,我有两个可编辑的数字列。两列的编辑器都扩展了 AbstractCellEditor 并使用 JFormattedTextField 作为编辑组件。

问题在于输入的格式取决于行中另一列的值。如果满足条件X,则小数位数应为Y,否则应为Y+2。

我试图覆盖 getTableCellEditor(..) 方法以在每行关联一个 TableCellEditor。参见 this example .但是,由于我有两个可编辑的列,每行共享一个 TableCellEditor 对象会产生一些非常奇怪的结果。我认为这不是合适的解决方案。

任何关于如何解决这个问题的想法都将不胜感激!

谢谢!

最佳答案

我认为您不需要为每行关联一个 TableCellEditor。

你只需要一个 ,它会自己访问其他数据。在 getTableCellEditor() 中,您可以访问表格以及坐标(列、行)。

有了这个,您可以直接向表格询问当前行所需列的值。

请记住,像渲染器一样,单元格编辑器是“共享的”。您确实在要求同一个对象为您提供编辑器组件(例如,大部分时间是 TableCellEditor 本身,扩展 JFormattedTextField)。因此您不需要每行放置一个,方法 getTableCellEditor() 将被调用,使用当前的列和行索引,您将提供具有适当格式的组件,具体取决于条件..

像这样:

public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column)
{
Object data = table.getValueAt(row, CONDITION_COLUMN);
if (data is something)
this.setFormat(FORMAT1);
else
this.setFormat(FORMAT2);

return this;
}

关于java - Swing:一列的多个 CellEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601251/

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