2015-09-30 15 views
5

मेरे जावाएफएक्स एप्लिकेशन के लिए मैं यह जांचना चाहता हूं कि टेक्स्टफिल्ड्स खाली हैं या नहीं, और यदि ऐसा है, तो उपयोगकर्ता को सतर्क करें।कैसे जांचें कि टेक्स्टफील्ड खाली है या नहीं?

VBox fields = new VBox(); 
Text usernametext = new Text("User name"); 
TextField user_name = new TextField(); 
Text firstnametext = new Text("First name"); 
TextField first_name = new TextField(); 
Text lastnametext = new Text("Last name"); 
TextField last_name = new TextField(); 
Text ibantext = new Text("IBAN"); 
TextField iban = new TextField(); 
Text passwordtext = new Text("Password"); 
TextField password = new TextField(); 
Text confirmpasstext = new Text("Confirm password"); 
TextField confirmpass = new TextField(); 
Button createBtn = new Button("Create account"); 
अब के लिए

मैं सिर्फ एक पाठ फ़ील्ड पर मान्यता का परीक्षण करना चाहता था: इन टेक्स्ट फ़ील्ड है। यह मेरी मान्यता समारोह है कि createBtn से जुड़ा हुआ है:

public void validation(){     

    if(user_name.getText().trim().isEmpty()){ 
     Alert fail= new Alert(AlertType.INFORMATION); 
     fail.setHeaderText("failure"); 
     fail.setContentText("you havent typed something"); 
     fail.showAndWait(); 
    } else { 
     Alert alert = new Alert(AlertType.INFORMATION); 
     alert.setHeaderText("Succes"); 
     alert.setContentText("Account succesfully created!"); 
     alert.showAndWait(); 
    } 
} 

लेकिन जैसा कि मैंने 'खाता बनाएँ' बटन दबाएँ मैं इस त्रुटि संदेश मिलता है: पहले से

Exception in thread "JavaFX Application Thread" 

java.lang.NullPointerException 
    at opdracht1.Opdracht1.validation(Opdracht1.java:36) 
    at opdracht1.Opdracht1$2$1.handle(Opdracht1.java:103) 
    at opdracht1.Opdracht1$2$1.handle(Opdracht1.java:98) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Node.fireEvent(Node.java:8411) 
    at javafx.scene.control.Button.fire(Button.java:185) 
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) 
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) 
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$355(GlassViewEventHandler.java:388) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555) 
    at com.sun.glass.ui.View.notifyMouse(View.java:937) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 

धन्यवाद!

+0

क्या आप कृपया कह सकते हैं कि 'Opdracht1.java' की कौन सी पंक्ति 36 है? – ItachiUchiha

+0

@ItachiUchiha अगर (user_name.getText()। Trim()। IsEmpty()) { – user3660293

+0

तब यह अपेक्षा की जाती है कि उपयोगकर्ता_नाम शून्य है। अपना कोड जांचें जहां आप इसे शून्य पर सेट कर सकते हैं, या आपके पास एक ही नाम के साथ कई चर हो सकते हैं। –

उत्तर

7

सबसे पहले, जांचें कि user_nameशून्य नहीं है। यदि ऐसा नहीं है, तो आप अपने कोड में कहीं भी JavaFX घटक में शून्य टेक्स्ट मान सेट कर रहे हैं।

if(user_name.getText().trim().isEmpty()){

किसी भी मामले में, trim() एक अशक्त करने के लिए मूल्य लागू करने के क्या आपके अपवाद कारण बनता है। आपको इसकी आवश्यकता नहीं होनी चाहिए (Uluk Biy इस उत्तर पर टिप्पणी करें), लेकिन user_name टेक्स्टफिल्ड बनाने पर विचार करते हुए, आपको पहले जांच करनी चाहिए कि getText() विधि शून्य नहीं है।

if (user_name.getText() == null || user_name.getText().trim().isEmpty()) { 
    // your code here 
} 
+2

'user_name.getText()' शून्य नहीं हो सकता है क्योंकि 'TextField' का डिफ़ॉल्ट कन्स्ट्रक्टर प्रारंभिक पाठ को "" खाली स्ट्रिंग) पर सेट करता है। –

+0

बिल्कुल सही। हालांकि उसे कार्यक्रम में कहीं नल मूल्य निर्धारित करना होगा; उल्लिखित रेखा में एक नल पॉइंटर प्राप्त करने का यही एकमात्र तरीका है। –

+0

"" पाठ पर सेट है यदि setText() के लिए पारित तर्क शून्य है। तो getText() ने सुनिश्चित किया कि वैसे भी वापस न लौटें। एनपीई तब होता है जब दिए गए लाइन के लिए user_name भी शून्य है। –

0

यह द्वारा

if(textField.getText().trim().equals("")) 
{ 
system.out.println("textField is empty"); 
} 
-1

बस जाँच की जा सकती आप इस कोड अपने TextFeild

के नाम के साथ मेरी चैम्प्स का नाम बदलने के परीक्षण कर सकते हैं:

कुछ इस तरह चाल करना चाहिए

if ((nom_pt.getText().toString().compareTo("") == 0) || 
    (prenom_pt.getText().toString().compareTo("") == 0) || 
    (cin_pt.getText().toString().compareTo("") == 0) || 
    (gsm_pt.getText().toString().compareTo("") == 0)) { 

    JOptionPane.showMessageDialog(null, "champs vide"); 

} else { JOptionPane.showMessageDialog(null, "Enregistrement a été ajouter"); } 
0

आप टेक्स्टफिल्ड के साथ बाध्य करने के लिए बटन अक्षमप्रॉपर्टी का उपयोग कर सकते हैं। जब टेक्स्टफील्ड खाली होता है, तो बटन अक्षम कर दिया जाएगा, अन्यथा यह सक्षम हो जाएगा।

उपयोग कोड

createBtn.disableProperty().bind(
    Bindings.createBooleanBinding(() -> 
     user_name.getText().trim().isEmpty(), user_name.textProperty() 
    ) 
    // If you want to check more text field, use it as by removing comments 
    //.or( Bindings.createBooleanBinding(
    //   first_name.getText.trim().isEmpty(), first_name.textProperty() 
    // ) 
    // ) 

); 
0

ठीक नीचे उल्लेख किया है, यह है कि कैसे मैं यह किया है और यह काम करता है।

ऊपर काम करता है की घटना से कोई भी में हैं, तो कोशिश निम्नलिखित:

एक स्ट्रिंग चर बनाएँ, मान लीजिए कि स्ट्रिंग उपयोगकर्ता नाम करते हैं; इसके बाद, निम्न प्रयास करें:

if(username.trim().isEmpty()) 

मूल सुझाव मेरे लिए काम नहीं किया था, लेकिन स्ट्रिंग बनाने, किया था, इसलिए यदि उपरोक्त सुझावों आप के लिए काम नहीं किया है, यह एक शॉट देने के।

0

textField.getText()। ट्रिम()। बराबर ("")

बयान से ऊपर मेरे लिए एक आकर्षण की तरह काम किया।

+0

जबकि यह कोड स्निपेट प्रश्न हल कर सकता है, [एक स्पष्टीकरण सहित] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। – Ferrrmolina

संबंधित मुद्दे