我可以使用缓冲的JGoodies格式文本字段接收属性更改事件吗?

时间:2013-03-04 16:43:16

标签: java swing jtextfield jgoodies propertychangelistener

我有一个方法将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的背景颜色。我不想在输入时提交值,我只想检测该值是否与上次提交的值不同。

2 个答案:

答案 0 :(得分:1)

  

我可以在输入时收到这些事件吗?

请参阅Implementing a Document Filter或可能How to Write a Document Listener

答案 1 :(得分:0)

使用BasicComponentFactory.createTextField(ValueModel,boolean)可能会更好。这允许您为第二个参数传递false,并在您键入时发生提交。但您必须自己进行格式化和验证,或使用JGoodies验证API。

JGoodies将与您可能使用的任何文档或其他格式化程序冲突。