Hallo
Ich habe ein JDialog erstellt welches ich aus meinem MainFrame aufrufe. Der Benutzer gibt dann dort einige Werte ein und drückt auf OK. Wie komme ich nun aus dem MainFrame an die Daten dran? Ich habe zwar einige getter in dem JDialog hinzugefügt aber ich weiß nicht wann ich diese auslesen soll. Der Konstruktor erzeugt mir sofort den Dialog un zeigt mir diesen an. Nur wo soll ich auf die Eingabe des Benutzers warten?
Wie sieht dann der Aufruf der Klasse aus?
Das implementieren des ActionListeners kann ruhig raus, war noch zu testzwecken drin weil ich es irgendwie hinkriegen wollte (this übergeben für crossreferenzen und so...).
Ich habe ein JDialog erstellt welches ich aus meinem MainFrame aufrufe. Der Benutzer gibt dann dort einige Werte ein und drückt auf OK. Wie komme ich nun aus dem MainFrame an die Daten dran? Ich habe zwar einige getter in dem JDialog hinzugefügt aber ich weiß nicht wann ich diese auslesen soll. Der Konstruktor erzeugt mir sofort den Dialog un zeigt mir diesen an. Nur wo soll ich auf die Eingabe des Benutzers warten?
Code:
public class ConnectDialog extends JDialog implements ActionListener {
private JTextField host;
private JTextField port;
private JTextField nickname;
private JButton connect;
private JButton cancel;
private boolean ok;
private MainFrame main;
public ConnectDialog(MainFrame main) {
super();
this.initComponents();
this.main = main;
}
private void initComponents() {
this.setTitle("Zum Server verbinden");
this.setLayout(new GridLayout(4, 2));
this.add(new JLabel("Adresse"));
this.add(this.host = new JTextField());
this.add(new JLabel("Port"));
this.add(this.port = new JTextField("40000"));
this.add(new JLabel("Nickname"));
this.add(this.nickname = new JTextField());
this.add(this.connect = new JButton("Verbinden"));
this.connect.addActionListener(this);
this.add(this.cancel = new JButton("Abbrechen"));
this.cancel.addActionListener(this);
this.setSize(250, 120);
this.setLocation(400, 400);
this.setVisible(true);
this.ok = false;
}
public String getHost() {
return this.host.getText();
}
public String getPort() {
return this.port.getText();
}
public String getNickname() {
return this.nickname.getText();
}
public boolean isOK() {
return false;
}
private void closeIt() {
setVisible(false);
dispose();
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(this.connect.getText())) {
this.ok = true;
}
this.closeIt();
}
}
Code:
ConnectDialog con = new ConnectDialog(this);
// irgendwie darauf warten das der User auf "Verbinden" geklickt hat
if (con.isOK()) {
String host = con.getHost();
....
}
Das implementieren des ActionListeners kann ruhig raus, war noch zu testzwecken drin weil ich es irgendwie hinkriegen wollte (this übergeben für crossreferenzen und so...).