ces Geschrieben 25. März 2010 Geschrieben 25. März 2010 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 Zitieren
speedi Geschrieben 25. März 2010 Geschrieben 25. März 2010 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. Zitieren
ces Geschrieben 25. März 2010 Autor Geschrieben 25. März 2010 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 Zitieren
LadyPreis Geschrieben 25. März 2010 Geschrieben 25. März 2010 hab ich das richtig verstanden? Du hast dir ne eigene JOptionPane-Klasse geschrieben? Wenn ja, ist der Hund dort begraben. Dann kann man nur helfen, wenn du mal deinen QT der Klasse postest. Zitieren
ces Geschrieben 25. März 2010 Autor Geschrieben 25. März 2010 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 Zitieren
Dragon8 Geschrieben 25. März 2010 Geschrieben 25. März 2010 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. Zitieren
LadyPreis Geschrieben 25. März 2010 Geschrieben 25. März 2010 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 -.- Zitieren
Ulfmann Geschrieben 25. März 2010 Geschrieben 25. März 2010 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 } Zitieren
speedi Geschrieben 26. März 2010 Geschrieben 26. März 2010 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. Zitieren
Dragon8 Geschrieben 26. März 2010 Geschrieben 26. März 2010 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. Zitieren
ces Geschrieben 26. März 2010 Autor Geschrieben 26. März 2010 Servus, danke die Antwort von Lady.. hat mir sehr geholfen danke. Zitieren
Empfohlene Beiträge
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.