Java Dialog - Find out if OK is clicked?

user569322 picture user569322 · Dec 20, 2011 · Viewed 18.5k times · Source

I have a dialog for a client-GUI that asks for the IP and Port of the server one wants to connect to. I have everything else, but how would I make it so that when the user clicks "OK" on my dialog box, that it runs something? Here's what I have so far:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JTextField;


public class ClientDialog {
    JTextField ip = new JTextField(20);
    JTextField port = new JTextField(20);
    GUI gui = new GUI();
    Client client = new Client();
    JOptionPane optionPane;

    public void CreateDialog(){

        Object msg[] = {"IP: ", ip, "\nPort: ", port};

        optionPane = new JOptionPane();
        optionPane.setMessage(msg);
        optionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);
        JDialog dialog = optionPane.createDialog(null, "Connect to a server");
        dialog.setVisible(true);

        if(dialog == JOptionPane.OK_OPTION){
            System.out.println(ip);

            String ipMsg = ip.getText();
            int portMsg = Integer.parseInt(port.getText());

            gui.CreateConsole(client, ipMsg, portMsg);
        }

    }

}   //End class

I know that the code isn't correct, but what I want is that when the user hits "OK" on the dialog, I can run some code. Thanks!

Answer

mKorbel picture mKorbel · Dec 20, 2011

I'd suggest to use showConfirmDialog instead

int result = JOptionPane.showConfirmDialog(myParent, "Narrative", 
       "Title", JOptionPane.INFORMATION_MESSAGE);

and there you can test for various returns value from JDialog/JOptionPane

if (result == JOptionPane.OK_OPTION, 
              JOptionPane.CANCEL_OPTION, 
              JOptionPane.CLOSED_OPTION, etc..