Klicken auf die Schaltfläche Abbrechen showInputDialogue
Ich habe eine Frage in Bezug auf das drücken der Abbrechen-Taste meiner inputDialoguebox. Ich habe eine ähnliche Frage vor, so dass ich entschuldige mich, wenn ich scheine, mich zu wiederholen.
Das Hauptproblem was ich habe ist, dass mein code wird unabhängig von mir durch drücken der Taste cancel und eine socket-Verbindung nicht gemacht, auch wenn ich überhaupt keinen input mehr gebe.
Warum passiert das und wie kann ich diese vermeiden?
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);
Also mit dem code wird die Art und Weise ist es im moment die clientsocket-Verbindung hergestellt ist, auch wenn ich Sie auf Abbrechen drücken. Ist der Grund vielleicht, weil ich die Server-und Client-als zwei separate Programme auf dem gleichen Rechner? Wie kann ich vermeiden, dass dies geschieht?
- Für bessere Hilfe früher, nach einem SSCCE. BTW -
showInputDialogue
&inputDialoguebox
solche Dinge nicht. Bitte nehmen Sie sich mehr Pflege-Typisierung Beiträge. - Sorry. Ich werde tun, dass
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie klicken Sie auf die
Cancel Button
desshowInputDialog(...)
bekommen Sie immer einen null-Wert, für die keine Bedingung erfüllt ist, damit eine neue Verbindung wird immer hergestellt.So können Sie diesen Zustand so :
Wird es immer gehen in der else-Bedingung, auch wenn die Abbrechen Schaltfläche gedrückt wird. Überprüfen,
fügen Sie obigen code vor dem letzten else-Anweisung explizit, und Griff button Abbrechen gedrückt die es gibt.
showInputDialog(...)
ist einString
und vergleichen Sie es mit einemint
Wert vonJOptionPane.CANCEL_OPTION
. Bin ich falsch ?Ich hatte das gleiche Problem, und ich löste es wie folgt:
So, ich im Grunde zog die null test vor der Prüfung, wenn der Benutzer eingegeben hat einige input. Hoffe, dies geholfen!