2011-09-21 62 views
0

我有2個名爲「qty」和「amount」的JtextFields。當用戶鍵入數量時,該值在某些計算下消失,並將最後一個值設置爲數量文本字段。我已經將這兩個文本域綁定到了bean綁定類的屬性。當用戶鍵入數量時,負責該文本字段的屬性被調用,然後我調用了qty的firepropertychange以及數量的firepropertychange,以根據數量更新數量的值。這個效果很好。當qty的文本框的值被退格按鈕刪除時,qty的值也會改變。但是當qty文本框爲空時,文本框的數量保持其最後的值(假設qty的數字爲'22'並且數量爲textfield顯示'44',當退格被按下時,數字爲'2'且金額的showwing值爲'4',但當qty中的最後一個值'2'被刪除時,金額文本字段顯示爲'4')。文本字段的數量應該顯示爲零。JTextField BeansBinding

這個請求的任何解決方案?

+0

聽起來像轉換字符串 - >號碼不能處理空/空輸入(其中大部分格式化不能,你必須告訴他們或你轉換器接受一個0) – kleopatra

+0

我還是新的beanbinding。你能告訴我樣品轉換課程如何做到這一點嗎? –

+0

我認爲,當JTextField中沒有任何字符時(前面有一些字符時),JtextField的值是「」不爲空或爲空。這就是我的想法和不知道確切的reasone。 –

回答

1

剛剛檢查了默認的轉換器:它們不處理空/空,你必須實現一個可以做和設置綁定。喜歡的東西,看到取消對轉換器設定的區別:

@SuppressWarnings({ "rawtypes", "unchecked" }) 
private void bind() { 
    BindingGroup context = new BindingGroup(); 
    AutoBinding firstBinding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, 
      // this is some int property 
      this, BeanProperty.create("attempts"), 
      fields[0], BeanProperty.create("text")); 
    context.addBinding(firstBinding); 
    // firstBinding.setConverter(INT_TO_STRING_CONVERTER); 
    context.bind(); 
} 

static final Converter<Integer, String> INT_TO_STRING_CONVERTER = new Converter<Integer, String>() { 
    @Override 
    public String convertForward(Integer value) { 
     return Integer.toString(value); 
    } 

    @Override 
    public Integer convertReverse(String value) { 
     if (value == null || value.trim().length() == 0) return 0; 
     return Integer.parseInt((String) value); 
    } 
}; 
+0

感謝您的代碼。我在我的應用程序中使用它。它工作得很好。非常感謝你:)我還在轉換器中遇到了另一個問題。我可以用你的想法解決這個問題。很高興 :) –