2012-03-16 8 views
7

私の入力ダイアログボックスのキャンセルボタンを押すことに関して質問があります。私は前に同様の質問をしましたので、私は自分自身を繰り返すように思えば謝ります。キャンセルボタンをクリックするshowInputDialogue

私が持っている主な問題は、私が入力を追加しなくてもキャンセルを押してもソケット接続ができても私のコードが実行されるということです。

なぜこのようなことが起こり、どうすればこの問題を回避できますか?

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

私はキャンセルボタンを押しても、コードは現時点ではクライアントソケットに接続されています。なぜなら私はServerとClientを同じマシン上に2つの別個のプログラムとして持っているからでしょうか?これを避けるにはどうすればよいですか?

+0

。 BTW - 'showInputDialogue'&' inputDialoguebox'はそのようなものはありません。もっと注意して入力してください。 –

+0

申し訳ありません。私はそれをします – Arianule

答えて

5

showInputDialog(...)Cancel Buttonをクリックすると、常に条件が満たされないため、常に新しい接続が確立されます。 だから、このように、この条件を追加することができます:[SSCCE](http://sscce.org/)を投稿し、早いほど良いのヘルプについて

2

キャンセルボタンを押しても常に状態が変わります。

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

上記のコードを最後にelse文の前に明示的に追加し、そこでキャンセルボタンを押してください。

+1

あなたは少し間違いをしているようですが、 'showInputDialog(...)'によって返される値は 'String'であり、' JOptionPane.CANCEL_OPTION'の 'int'値と比較します。私が間違っている ? –

+0

はい、私はそれをやり遂げる方法を述べただけで、どの質問者がいなくなっていますか? –

関連する問題