我有一个关于按下inputDialoguebox的取消按钮的问题。我之前问过类似的问题,所以如果我好像重复自己,我会道歉。
我遇到的主要问题是,无论我是否按下取消,我的代码都会执行,即使我没有添加任何输入,也会进行套接字连接。
为什么会发生这种情况,我该如何避免这种情况?
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);
因此,即使我按下取消,代码就是当前进行clientocket连接的方式。原因可能是因为我在同一台机器上将服务器和客户端作为两个单独的程序?我怎样才能避免这种情况发生?
答案 0 :(得分:6)
当您单击Cancel Button
的{{1}}时,您始终会得到一个空值,因为没有满足任何条件,因此始终建立新连接。
所以你可以像这样添加这个条件:
showInputDialog(...)
答案 1 :(得分:2)
即使按下取消按钮,它也将始终处于其他状态。检查,
else if(input == JOptionPane.CANCEL_OPTION){
System.out.println("Cancel is pressed");
}
显式地在last else语句之前添加上面的代码,并在那里按下取消按钮。
答案 2 :(得分:0)
我有同样的问题,我按照以下方式解决了这个问题:
if(input != null){
if(!input.isEmpty()){
// Do whatever...
}
}
因此,如果用户输入了一些输入,我在测试之前基本上移动了 null 测试。希望这有帮助!