2015-09-30 22 views
5

cho ứng dụng JavaFx của tôi Tôi muốn kiểm tra xem TextFields có trống không và nếu có, hãy thông báo cho người dùng. Đây là các TextFields:Cách kiểm tra xem trường văn bản có trống không?

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"); 

bây giờ tôi chỉ muốn kiểm tra xác thực trên một trường văn bản. đây là chức năng xác nhận của tôi mà được liên kết với 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(); 
    } 
} 

Nhưng tôi nhận được thông báo lỗi này như tôi nhấn nút 'Tạo Tài khoản':

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) 

Cảm ơn trước!

+0

Bạn có thể nói dòng 36 của 'Opdracht1.java' không? – ItachiUchiha

+0

@ItachiUchiha nếu (user_name.getText(). Trim(). IsEmpty()) { – user3660293

+0

Sau đó, dự kiến ​​user_name là null. Kiểm tra mã của bạn tại nơi bạn có thể đặt mã thành giá trị rỗng hoặc bạn có thể có nhiều biến có cùng tên. –

Trả lời

7

Trước hết, hãy kiểm tra xem user_name không phải là null. Nếu không, bạn đang đặt giá trị văn bản null thành thành phần JavaFX ở đâu đó trong mã của bạn.

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

Trong mọi trường hợp, áp dụng trim() đến một rỗng giá trị là những gì gây ra ngoại lệ của bạn. Bạn không nên cần điều này (xem chú thích Uluk Biy của câu trả lời này), nhưng xem xét bạn đã tạo user_name TextField, trước tiên bạn phải kiểm tra xem phương pháp getText() không phải là null.

Something như thế này nên làm như lừa:

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

'user_name.getText()' không thể null vì hàm tạo mặc định của 'TextField' đặt văn bản ban đầu thành" "(chuỗi trống). –

+0

Hoàn toàn đúng. Tuy nhiên, ông phải thiết lập một giá trị null ở đâu đó trong chương trình; đó là cách duy nhất để có được một con trỏ null trong dòng đã đề cập. –

+0

"" được đặt thành văn bản nếu đối số được truyền cho setText() là null. Vì vậy, getText() đảm bảo không trả về null. NPE xảy ra nếu user_name cũng là null cho dòng đã cho. –

0

Điều này có thể được kiểm tra đơn giản bằng cách

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

Bạn có thể kiểm tra mã này thay thế Tên của champs của tôi với tên của TextFeild bạn

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

bạn có thể sử dụng Button disableProperty để liên kết với TextField. khi trường văn bản trống, sau đó nút sẽ bị vô hiệu hóa, nếu không nút này sẽ được bật.

sử dụng mã đề cập dưới đây

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

Được rồi, đây là cách tôi đã làm nó và nó hoạt động.

Nếu trong trường hợp không có tác phẩm nào ở trên, hãy thử các cách sau:

Tạo biến chuỗi, giả sử Tên người dùng chuỗi; Tiếp theo, hãy thử như sau:

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

Các gợi ý ban đầu không làm việc cho tôi, nhưng việc tạo ra chuỗi đã làm, vì vậy nếu những gợi ý trên không làm việc cho bạn, cung cấp cho một shot.

0

textField.getText(). Trim(). Equals ("")

Trên tuyên bố đã làm việc như một nét duyên dáng cho tôi.

+0

Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. – Ferrrmolina

Các vấn đề liên quan