我有一个方法将JTextField绑定到JGoodies中的bean
public static JTextField bindDoubleTextField(PresentationModel<?> adapter, String
propertyName, boolean useBuffer)
{
ValueModel valueModel = getValueModel(adapter, propertyName, useBuffer);
DecimalFormat decimalFormat = new DecimalFormat("0.######");
decimalFormat.setGroupingUsed(false);
JTextField textField = BasicComponentFactory.createFormattedTextField(valueModel, decimalFormat);
return textField;
}
稍后在代码中我将一个propertyChangeListener添加到ValueModel,但它只在我将焦点丢失到JTextField时才接收到该事件。在我输入时是否可以接收这些事件?我希望能够根据值是否与其原始值不同来设置JTextField的背景颜色。我不想在输入时提交值,我只想检测该值是否与上次提交的值不同。
答案 0 :(得分:1)
我可以在输入时收到这些事件吗?
请参阅Implementing a Document Filter或可能How to Write a Document Listener。
答案 1 :(得分:0)
使用BasicComponentFactory.createTextField(ValueModel,boolean)可能会更好。这允许您为第二个参数传递false,并在您键入时发生提交。但您必须自己进行格式化和验证,或使用JGoodies验证API。
JGoodies将与您可能使用的任何文档或其他格式化程序冲突。