Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich programmiere gerade ein kleines Tool intern für meine Firma in der ich arbeite.

Das tool ansich ist fertig, ich habe aber noch ein kleines problem.

Wie kann ich wenn ich einen Dialog selbst erstellt habe die Abfragen ob Ok oder Cancel gedrückt wurde steuern wenn ich es in keiner int variable gespeichert habe.

Ich setze mal meinen Code mit bei:

JTextField ip = new JTextField();

JTextField netmask = new JTextField();

JTextField gateway = new JTextField();

JTextField hostAdress = new JTextField();

JTextField broadcast = new JTextField();

JTextField snProduct = new JTextField();

snProduct.setEditable(false);

JTextField snWsMain = new JTextField();

snWsMain.setEditable(false);

JTextField snWsMainIdX = new JTextField();

snWsMainIdX.setEditable(false);

JTextField snCoil = new JTextField();

snCoil.setEditable(false);

JTextField snCoilIdX = new JTextField();

snCoilIdX.setEditable(false);

Object[] message =

{"IP-Adress", ip,"Netmask", netmask,

"Gateway", gateway,"Host-Adress",hostAdress,

"Broadcast", broadcast,"SN-Product", snProduct,

"SN-Ws-Main", snWsMain,"SN-Ws-Main-IdX",

snWsMainIdX,"Sn-Coil", snCoil,Sn-Coil-IdX", snCoilIdX,

};

ip.setText(IpAdress);

netmask.setText(Netmask);

gateway.setText(Gateway);

hostAdress.setText(HostAdress);

broadcast.setText(BroadCast);

snProduct.setText(SnProduct);

snWsMain.setText(SnWsMain);

snWsMainIdX.setText(SnWsMainIdx);

snCoil.setText(SnCoil);

snCoilIdX.setText(SnCoilIdx);

JOptionPane pane = new JOptionPane( message,

JOptionPane.PLAIN_MESSAGE,

JOptionPane.OK_CANCEL_OPTION);

pane.createDialog(null, "Change Ip").setVisible(true);

wie kann ich nun in meinen JoptionaPane meine abfrage dazu machen welcher knopf gedrückt wurde ?

Ich hab gerade total den hänger.

Hoffe ihr könnt mir helfen. Im netz finde ich leider nichts anständiges

Viele Grüsse

Geschrieben

probiers mal mit:

int i = JOptionPane.showMessageDialog(null,message,"Frage",JOptionPane.OK_CANCEL_OPTION);

Sicherlich gibts bei deiner Variante auch ne möglichkeit den Rückgabewert abzufragen, lies doch einfach mal in der Java-API-Documentation nach.

Geschrieben

hi, ich hab echt alles gelesen. aber ich find nix.

wenn ich das mach wie du es mir beschrieben hast bekomm ich folgende fehlermeldung:

Type mismatch: cannot convert from void to int

ich will nur abbrechen und ok verwalten. bei nen normalen joptionpane geht das auch mit int i = ....

aber da dieser selber zusammengestellt ist.

need help :(

Geschrieben

Hi ne :)

ich hab schliesslich nur ob Object mit mehreren Feldern:

Object[] message = {"IP-Adress", ip,

"Netmask", netmask,"Gateway", gateway,"Host-Adress", hostAdress,

"Broadcast", broadcast,

"SN-Product", snProduct,

"SN-Ws-Main", snWsMain,"SN-Ws-Main-IdX",

snWsMainIdX,"Sn-Coil", snCoil,

"Sn-Coil-IdX", snCoilIdX,

};

anschliessend übergeb ich das object in meinen optionpane

JOptionPane pane = new JOptionPane( message,

JOptionPane.PLAIN_MESSAGE,

JOptionPane.OK_CANCEL_OPTION);

pane.createDialog(null, "Change Ip").setVisible(true);

jetzt will nurnoch die ok und cancel funktion steuern und das geht nicht :(

Geschrieben
hi, ich hab echt alles gelesen. aber ich find nix.

Das scheinst du scheinbar aber nicht gemacht zu haben, weil in der Java Documentation steht deine Lösung direkt unter dem Eintrag des JOptionPanes drin:

Direct Use:

To create and use an JOptionPane directly, the standard pattern is roughly as follows:

     JOptionPane pane = new JOptionPane(arguments);

     pane.set.Xxxx(...); // Configure

     JDialog dialog = pane.createDialog(parentComponent, title);

     dialog.show();

     Object selectedValue = pane.getValue();

     if(selectedValue == null)

       return CLOSED_OPTION;

     //If there is not an array of option buttons:

     if(options == null) {

       if(selectedValue instanceof Integer)

          return ((Integer)selectedValue).intValue();

       return CLOSED_OPTION;

     }

     //If there is an array of option buttons:

     for(int counter = 0, maxCounter = options.length;

        counter < maxCounter; counter++) {

        if(options[counter].equals(selectedValue))

        return counter;

     }

     return CLOSED_OPTION;

Welcher Int Wert welcher gedrückt Taste entspricht, kannst du über die Konstanten der Klasse JOptionPane rausfinden.

Geschrieben

Probier es mal so:

Object[] message = {"IP-Adress", "IP-Adress",

                            "Netmask", "Netmask",

                            "Gateway", "Gateway",

                            "Host-Adress", "Host-Adress",

                            "Broadcast", "Broadcast",

                            "SN-Product", "SN-Product",

                            "SN-Ws-Main", "SN-Ws-Main",

                            "SN-Ws-Main-IdX","SN-Ws-Main-IdX",

                            "Sn-Coil", "Sn-Coil",

                            "Sn-Coil-IdX", "Sn-Coil-IdX",};



        JOptionPane pane = new JOptionPane(message,JOptionPane.PLAIN_MESSAGE,JOptionPane.OK_CANCEL_OPTION);


        JDialog dialog = pane.createDialog(null, "Change Ip");

        dialog.show();

        Object selectedValue = pane.getValue();

        if(selectedValue instanceof Integer)

            System.out.println(((Integer)selectedValue).intValue());

        else

            System.out.println("null");

EDIT: da war jemand schneller -.-

Geschrieben

Welcher Int Wert welcher gedrückt Taste entspricht, kannst du über die Konstanten der Klasse JOptionPane rausfinden.

Genau das Gleiche wollte ich auch grade antworten. Völlig unabhängig von Deinem Verwendungszweck, kannst du z. B. sagen:

int n = JOptionPane.showConfirmDialog(frame,"Frage?","Eine Frage", JOptionPane.YES_NO_OPTION);

Und nach dem Klick fragst Du

if (n == JOptionPane.YES_OPTION)

{

    //do Something

}

Geschrieben

Sorry... ich hab die falsche Methode gepostet.

Nimm mal:


JOptionPane.showConfirmDialog(frame,"Frage?","Eine Frage", JOptionPane.YES_NO_OPTION);

Dieser Weg ist der übliche für kleine Standard-Dialoge, deshalb bietet Java-Swing hier auch zig Möglichkeiten vordefinierte Dialoge in einer Zeile zu erstellen und Rückgabewerte genauso einfach zu bekommen.

Geschrieben
Sorry... ich hab die falsche Methode gepostet.

Nimm mal:


JOptionPane.showConfirmDialog(frame,"Frage?","Eine Frage", JOptionPane.YES_NO_OPTION);

Dieser Weg ist der übliche für kleine Standard-Dialoge, deshalb bietet Java-Swing hier auch zig Möglichkeiten vordefinierte Dialoge in einer Zeile zu erstellen und Rückgabewerte genauso einfach zu bekommen.

Da er aber nicht nur einen kleinen Standarddialog erzeugen will, werden ihm diese ganzen Methoden wenig bringen.

Dass er für sich den Dialog selbst erstellt ist für sein Problem schon richtig, er muss dann halt nur über einen anderen Weg seine, wie oben aus der Standard Dokumentation zitiert, Rückgabewerte herausfinden.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...