Veröffentlicht 25. März 201015 j 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
25. März 201015 j 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.
25. März 201015 j 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
25. März 201015 j 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.
25. März 201015 j 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
25. März 201015 j 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.
25. März 201015 j 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 -.-
25. März 201015 j 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 }
26. März 201015 j 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.
26. März 201015 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.