11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing Komponenten Prof. Dr. Björn Dreher Liste Programmieren - Java 566 11. GUI-Programmierung mit SWING Überblick: 11.5. Dialoge Prof. Dr. Björn Dreher Liste Programmieren - Java 567
Definition von JMenu und JMenuItem JMenuBar Die gesamte Menüzeile JMenuBar menubar = new JMenuBar(); // sets menu bar setjmenubar(menubar); // Methode von JFrame JMenu Oberste Ebene der Menüzeile JMenu menuspiel = new JMenu(); menuspiel.settext("spiel"); menubar.add(menuspiel); Prof. Dr. Björn Dreher Liste Programmieren - Java 568 Definition von JMenu und JMenuItem JMenuItem Untermenüpunkt JMenuItem neuesspiel = new JMenuItem(); JMenuItem neuesspieldialog = new JMenuItem(); neuesspiel.settext("neues Spiel"); neuesspieldialog.settext("neues Spiel Dialog"); menuspiel.add(neuesspiel); menuspiel.add(neuesspieldialog); ActionListener für ein Menuitem neuesspiel.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { neuesspiel(e); ); Prof. Dr. Björn Dreher Liste Programmieren - Java 569
11. GUI-Programmierung mit SWING Überblick: 11.5. Dialoge Prof. Dr. Björn Dreher Liste Programmieren - Java 570 Einer der eigentlichen Actionlistener von JMenuItem Dialog durch statische Methoden von JOptionPane // Hole Parameter eines neuen Spiels über mehrere Option Panes public void neuesspiel(actionevent e) { String [] spielername = new String[4]; Object[] possiblevalues = { "1", "2", "3", "4" ; Object selectedvalue = JOptionPane.showInputDialog (null, "Bitte wählen", "Anzahl der Spieler", JOptionPane.INFORMATION_MESSAGE, null, possiblevalues, possiblevalues[3]); if (selectedvalue instanceof String) int anzahlspieler = new Integer((String) selectedvalue).intvalue(); for (int i = 0; i < anzahlspieler; i++) { spielername[i] = JOptionPane.showInputDialog("Name des " + (i+1) + ". Spielers"); model.neuesspiel(anzahlspieler, spielername); Prof. Dr. Björn Dreher Liste Programmieren - Java 571
11. GUI-Programmierung mit SWING Überblick: 11.5. Dialoge Prof. Dr. Björn Dreher Liste Programmieren - Java 572 Andere Version des eigentlichen Actionlisteners von JMenuItem Ein JDialog Fenster // Hole Parameter eines neuen Spiels über Dialog public void neuesspieldialog(actionevent e) { InitDialog d = new InitDialog(this, true); d.setlocationrelativeto(this); d.setvisible(true); // ruft show() auf // JDialog-Fenster öffnet sich. // Methode wartet, bis JDialog geschlossen wird. // JDialog wurde geschlossen. int a = d.gibanzahlspieler(); String [] namen = new String[4]; d.gibspielernamen(namen); model.neuesspiel(a, namen) Prof. Dr. Björn Dreher Liste Programmieren - Java 573
Das JDialog Fenster public class InitDialog extends JDialog { /* Creates new form JDialog */ public InitDialog(Frame parent, boolean modal) { super(parent, modal); initgui(); private void initgui() { addwindowlistener( new java.awt.event.windowadapter() { public void windowclosing(java.awt.event.windowevent evt) { closedialog(evt); ); pack(); settitle("spieler definieren"); getcontentpane().setlayout(new java.awt.gridbaglayout()); // Add Swing Components Prof. Dr. Björn Dreher Liste Programmieren - Java 574 Das JDialog Fenster (fortgesetzt) this.setsize(400, 300); setmodal(true); setresizable(false); buttonok.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e) { okactionperformed(e);); buttonabbruch.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e){ abbruchactionperformed(e);); /** Closes the dialog */ private void closedialog(windowevent evt) { setvisible(false); public int gibanzahlspieler() { return anzahlspieler; Prof. Dr. Björn Dreher Liste Programmieren - Java 575
Das JDialog Fenster (fortgesetzt) public void gibspielernamen(string [] namen) { for (int i = 0; i < anzahlspieler; i++) namen[i] = this.namen[i]; public void okactionperformed(actionevent e) { anzahlspieler = (new Integer(textFieldAnzahl.getText())).intValue(); namen[0] = textfieldspieler1.gettext(); namen[1] = textfieldspieler2.gettext(); namen[2] = textfieldspieler2.gettext(); namen[3] = textfieldspieler3.gettext(); Verbirgt Dialog, hide(); veranlasst, dass show() fortsetzt. public void abbruchactionperformed(actionevent e) { hide(); Prof. Dr. Björn Dreher Liste Programmieren - Java 576