2013-11-28 12 views
9

मेरे पास एक टेक्स्टफील्ड और एक बटन के साथ एक साधारण fxml है। यदि टेक्स्टफील्ड खाली है तो मैं बटन को अक्षम करना चाहता हूं। इसलिए मैं अपने नियंत्रक में निम्न की तरह कुछ डालता हूं:जावाएफएक्स कई गुणों से बंधे

@Override 
public void initialize(URL url, ResourceBundle bundle) { 
    button.disableProperty().bind(textField.textProperty().isEqualTo("")); 
} 

.. और यह ठीक काम करता है। समस्या तब होती है जब मैं दूसरा टेक्स्टफील्ड जोड़ता हूं और यदि टेक्स्टफील्ड खाली होता है तो मेरा बटन अक्षम होना चाहेंगे। तब क्या करना है? मैं निम्नलिखित की कोशिश की, लेकिन वह काम नहीं करता है:

@Override 
public void initialize(URL url, ResourceBundle bundle) { 
    button.disableProperty().bind(textField.textProperty().isEqualTo("")); 
    button.disableProperty().bind(textField2.textProperty().isEqualTo("")); 
} 

उत्तर

15

यह संभव है एक बूलियन अभिव्यक्ति से जुड़ कर Bindings के माध्यम से:

button.disableProperty().bind(
    Bindings.and(
     textField.textProperty().isEqualTo(""), 
     textField2.textProperty().isEqualTo(""))); 
+1

.textProperty()। IsEmpty() - मेरे लिए एक बेहतर दृष्टिकोण प्रतीत होता है। –

5

Andreys दृष्टिकोण के अलावा, मैंने पाया कि आप भी कर सकते हैं इस तरह यह कार्य करें:

BooleanBinding booleanBinding = 
     textField.textProperty().isEqualTo("").or(
     textField2.textProperty().isEqualTo("")); 

    button.disableProperty().bind(booleanBinding); 
1

इसके अलावा जवाब martin_dk लिए, यदि आप दो से अधिक गुण बाध्य करने के लिए आप नीचे दिए गए की तरह कोड मिल जाएगा चाहते हैं, अजीब लग रहा है, लेकिन यह काम करता है।

BooleanBinding booleanBinding 
     = finalEditor.selectedProperty().or(
       staticEditor.selectedProperty().or(
         syncEditor.selectedProperty().or(
           nativeEditor.selectedProperty().or(
             strictEditor.selectedProperty())))); 

abstractEditor.disableProperty().bind(booleanBinding); 
संबंधित मुद्दे