2013-07-25 76 views
1

我有一個簡單的Java應用程序,帶有文本框和按鈕。我正在尋找將一個JTextField的狀態綁定到一個JButton狀態的最佳快捷方式。我使用Eclipse,所以我不需要任何Netbeans IDE的技巧。如何在Java中綁定兩個UI對象的屬性?

假設用戶需要在文本字段中輸入值以便能夠發送請求。只有當文本字段的值不是空的並且至少包含3個符號時,才能啓用該按鈕。如果用戶刪除輸入,該按鈕將被禁用。

我來自Flex世界。這樣的任務可以很容易地解決。一個人應該寫這樣的東西:

<mx:Button enabled = "{myTextField.text.length >= 3}" /> 

Java中有這樣的機會嗎?它怎麼叫?我希望,我不需要爲每對邏輯連接的UI元素編寫事件監聽器,是嗎?

+0

爲什麼不寫入事件偵聽器?這就是觀察者模式如何在Swing中實現.. –

回答

1

我會在JTextField上使用DocumentListener。每次文檔更改時,都會檢查按鈕的狀態,如button.setEnabled(textField.getText().length > 3)

+0

非常感謝,我不知道它是如此簡單!如果在TextFields組件中處理文檔事件是一種很好的做法,您能否說我?我的意思是「myTf.getDocument()。addDocumentListener(this);」或者我應該總是創建一個新班級來執行此操作? – Anton

+0

我真的不知道「canon」對此有何評論,我可能在我的課程中實現了DocumentListener。內部類也是一種選擇,但我認爲在使用非靜態內部類時可能會遇到內存泄漏問題。 –

+0

我明白了。我通過添加「implements DocumentListener」並通過爲此接口編寫相應的方法來更改我的JFrame。所以我現在沒有內在的課程。我的JFrame是一個類,它監聽來自Document的事件。它運作良好!謝謝! – Anton