2012-03-16 10 views
7

Tôi có câu hỏi liên quan đến việc nhấn nút hủy của inputDialoguebox của tôi. Tôi đã hỏi một câu hỏi tương tự trước đây vì vậy tôi xin lỗi nếu tôi dường như lặp lại bản thân mình.Nhấp vào nút hủy showInputDialogue

Vấn đề chính của tôi là mã của tôi thực hiện bất kể tôi nhấn hủy và kết nối ổ cắm được thực hiện ngay cả khi tôi không thêm bất kỳ đầu vào nào.

Tại sao điều này xảy ra và làm cách nào để tránh điều này?

String input = ""; 
      try 
      { 
       InetAddress host = InetAddress.getLocalHost(); 
       String hostAddress = host.getHostAddress(); 

       //setting label to host number so as to know what number to use 
       labHostName.setText("(" + hostAddress + ")"); 

       input = JOptionPane.showInputDialog(null,"Please enter host name to access server(dotted number only)...see number on frame", "name", JOptionPane.INFORMATION_MESSAGE); 

       if(input != null && "".equals(input))//input != null && input.equals("")) 
       { 
        throw new EmptyFieldsException(); 



       } 
       else if(input != null && !input.equals(hostAddress)) 
       { 
        throw new HostAddressException(); 


       } 

       else 
       { 

        clientSocket = new Socket(input, 7777); 

Vì vậy, với mã đang được thực hiện ngay cả khi tôi nhấn hủy. Có phải vì lý do này có lẽ vì tôi có Server và Client là hai chương trình riêng biệt trên cùng một máy? Làm thế nào tôi có thể tránh điều này xảy ra?

+0

Để được trợ giúp tốt hơn sớm hơn, hãy đăng [SSCCE] (http://sscce.org/). BTW - 'showInputDialogue' &' inputDialoguebox' không có những thứ như vậy. Vui lòng ghi thêm các bài viết quan tâm. –

+0

Xin lỗi. Tôi sẽ làm điều đó – Arianule

Trả lời

5

Khi bạn nhấp vào Cancel Button của showInputDialog(...), bạn luôn nhận được giá trị rỗng, không thỏa mãn điều kiện, do đó kết nối mới luôn được thiết lập. Vì vậy, bạn có thể thêm điều kiện này như sau:

2

Nó sẽ luôn đi trong điều kiện khác ngay cả khi nhấn nút hủy. Kiểm tra,

else if(input == JOptionPane.CANCEL_OPTION){ 
    System.out.println("Cancel is pressed"); 
} 

thêm mã ở trên trước tuyên bố cuối cùng một cách rõ ràng và xử lý nút hủy ở đó.

+1

Có vẻ như bạn đang làm một chút sai lầm, giá trị được trả về bởi 'showInputDialog (...)' là một 'Chuỗi' và bạn so sánh nó với một giá trị' int' của 'JOptionPane.CANCEL_OPTION'. Liệu tôi có sai ? –

+0

Có, tôi vừa nêu một cách để làm điều đó và những gì người hỏi bị thiếu. –