gpt4 book ai didi

java - 输入 validator 单元格编辑器

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:59 24 4
gpt4 key购买 nike

我有一个表格,其中一列包含货币金额。困难在于每一行可以有不同的货币。我已经设置了一个默认的单元格编辑器,它在 stopCellEditing 中进行验证,效果很好。如果数据无效,编辑器不会停止,但该值将恢复为其原始值,而不是将无效数据保留在单元格中。我已经设置了焦点丢失行为:

ftf.setFocusLostBehavior(JFormattedTextField.PERSIST);

我查看了单元格编辑器的示例(请参阅 Specifying Formatters and Using Formatter Factories ),它可以工作,因为它使用整数格式:

       //Set up the editor for the integer cells.
integerFormat = NumberFormat.getIntegerInstance();
NumberFormatter intFormatter = new NumberFormatter(integerFormat);
intFormatter.setFormat(integerFormat);
intFormatter.setMinimum(minimum);
intFormatter.setMaximum(maximum);

ftf.setFormatterFactory(
new DefaultFormatterFactory(intFormatter));
ftf.setValue(minimum);
ftf.setHorizontalAlignment(JTextField.TRAILING);
ftf.setFocusLostBehavior(JFormattedTextField.PERSIST);

此格式工厂在 JFormattedTextField 中设置 isEditValid=false,因此当调用 stopCellEditing 时,它已经将 isEditValid 设置为 false。对于我的表,我无法使用格式化程序,因此一旦停止CellEditor,isEditValid 就是 true。我能想到的唯一方法是在字段上使用 InputVerifier。

问题是:在表格单元格上使用 InputVerifiers 是否可行?

我已经考虑在格式化程序中覆盖 stringToValue 和 valueToString,但我无法访问该行货币的详细信息,只能访问字符串。通过 InputVerifier,我可以访问单元格的原始字段,该字段是添加了货币信息的 JFormattedTextField 的子类。

我希望这是有道理的。

最佳答案

问题是在验证 FormattedTextString 时我使用了 getValue 而不是 getText。输入新数据之前,值将设置为原始值。文本设置为新值。一旦更改,它就会按预期运行。

供将来引用,在单元格处理发生之前,不会调用表格内 FormattedTextField 上的 InputVerifier,因此它不能用于表格单元格验证。

关于java - 输入 validator 单元格编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844196/

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