Harry
06-05-2002, 18:57
Hallo,
ich möchte innerhalb einer GUI-Applikation einen neuen modalen Dialog erzeugen, sobald der Anwender einen bestimmten Menüeintrag ausgewählt hat.
Nur: Ein Dialog benötigt im Konstruktor entweder eine Referenz auf ein übergeordnetes Frame-Objekt oder ein Dialog-Objekt und den habe ich im ActionListener, der hier ja einem MenuItem-Objekt zugeordnet wird, nicht zur Verfügung.
Ich poste hier mal den relevanten Codeabschnitt; in der Klasse MyMenuBar habe ich meine "Sorgenzeile" nochmal kenntlich gemacht:
import java.awt.*;
import java.awt.event.*;
public class meineGUI extends Frame {
public meineGUI() {
super("Mein Titel");
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
MyMenuBar myMenuBar = new MyMenuBar(this);
setMenuBar(myMenuBar);
// GridBagLayout-Krams gelöscht
setVisible(true);
}
public static void main(String[] args) {
meineGUI wnd = new meineGUI();
}
}
class MyMenuBar extends MenuBar {
public MyMenuBar() {
Menu m = new Menu("Datei");
m.add(MenuItem me = new MenuItem("Einstellungen", new MenuShortcut('e')));
me.setActionCommand("Einstellungen");
/*--->*/me.addActionListener(new PropertyDialog(?, "Eigenschaften", true));
add(m);
}
}
class PropertyDialog extends java.awt.Dialog implements ActionListener {
public PropertyDialog(Dialog owner, String title, boolean modal) {
// Initialisierungen
}
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
String cmd = actionEvent.getActionCommand();
if (cmd.equals("Einstellungen")) {
// Dialog "malen"
}
}
}
Tja, wie komme ich da (dort wo das "?" steht) an eine Referenz eines Frame- oder Dialog-Objekt?
Oder sollte ich da von der Konzeption anders rangehen?
Harry
ich möchte innerhalb einer GUI-Applikation einen neuen modalen Dialog erzeugen, sobald der Anwender einen bestimmten Menüeintrag ausgewählt hat.
Nur: Ein Dialog benötigt im Konstruktor entweder eine Referenz auf ein übergeordnetes Frame-Objekt oder ein Dialog-Objekt und den habe ich im ActionListener, der hier ja einem MenuItem-Objekt zugeordnet wird, nicht zur Verfügung.
Ich poste hier mal den relevanten Codeabschnitt; in der Klasse MyMenuBar habe ich meine "Sorgenzeile" nochmal kenntlich gemacht:
import java.awt.*;
import java.awt.event.*;
public class meineGUI extends Frame {
public meineGUI() {
super("Mein Titel");
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
MyMenuBar myMenuBar = new MyMenuBar(this);
setMenuBar(myMenuBar);
// GridBagLayout-Krams gelöscht
setVisible(true);
}
public static void main(String[] args) {
meineGUI wnd = new meineGUI();
}
}
class MyMenuBar extends MenuBar {
public MyMenuBar() {
Menu m = new Menu("Datei");
m.add(MenuItem me = new MenuItem("Einstellungen", new MenuShortcut('e')));
me.setActionCommand("Einstellungen");
/*--->*/me.addActionListener(new PropertyDialog(?, "Eigenschaften", true));
add(m);
}
}
class PropertyDialog extends java.awt.Dialog implements ActionListener {
public PropertyDialog(Dialog owner, String title, boolean modal) {
// Initialisierungen
}
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
String cmd = actionEvent.getActionCommand();
if (cmd.equals("Einstellungen")) {
// Dialog "malen"
}
}
}
Tja, wie komme ich da (dort wo das "?" steht) an eine Referenz eines Frame- oder Dialog-Objekt?
Oder sollte ich da von der Konzeption anders rangehen?
Harry