Dialog aus Menü aufrufen

Status
Nicht offen für weitere Antworten.

mknapp

Mitglied
Hallo,
mein Problem ist folgendes: welchen Namen für den Frame (in dem sich eine Menuleiste befindet) übergebe ich an den Konstruktor von MyDialog, damit sich der Dialog aus einem Menu-Eintrag öffnet? Im Konstruktor steht "Frame owner". Wie muss ich MyDialog in der MyMenu-Klasse also instanzieren, damit es klappt? Mit this-Zeiger geht es nicht, ich denke man muss den Namen des Vater-Frames übergeben. Aber welches ist der Name?


Code:
public class Listing
extends Frame
{
  public static void main(String[] args)
  { 
    Listing wnd = new Listing();
    wnd.setLocation(0,0);
    wnd.setMenuBar(new MyMenu());                           
    wnd.setVisible(true);
    
  }
...




class MyMenu
extends MenuBar
implements ActionListener
{ 
  public MyMenu()
  {
    Menu m;
    m = new Menu("Datei");
    m.add(new MenuItem("Beenden"));
    add(m);
...
}
public void actionPerformed(ActionEvent event){
   String cmd = event.getActionCommand();  
     if (cmd.equals("Beenden")) {
       MyDialog my = new MyDialog();   	 
      }
  }
}
...




class MyDialog 
extends Dialog
{
  public MyDialog(Frame owner){
     super (owner, "", true);
     setBackground(Color.lightGray);
...


Wäre sehr dankbar für Hilfe

Gruß
mknapp
 

Chris_1980

Bekanntes Mitglied
Du mußt den Frame ja garnicht angeben. Ist glaub ich sowieso nur damit der Dialog automatisch in der Mitte des Frames geöffnet wird. Wenn du die Position selbst bestimmst kannst du getrost
Code:
super((JFrame)null, "Dialogtitel", true);
schreiben
 

mknapp

Mitglied
@thE:
getParent() ist eine gute Idee, aber liefert leider einen Rückgabewert vom Typ MenuContainer. Zeile 45 benötigt allerdings ein Frame-Objekt, welches der Dialog-Klasse übergeben wird. Wie kann ich das Problem lösen?

@Chris:
die Möglichkeit sah zunächst gut aus (kein Compiler-Fehler), funktioniert aber leider nicht. Beim Klick auf das MenuItem kommt eine ganze Reihe Exceptions ("null owner window" und "unknown source"...). Vielleicht geht das nur bei Swing (du hattest JFrame als Bsp.); könnte sein, dass das bei AWT anders ist?
 

Chris_1980

Bekanntes Mitglied
Also ich hab mal eben in dem geilen JavaEditor was zusammen geklickt und da funzt des auch mit AWT. :roll:



Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends Frame {

  public Test(String title) {

    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Panel cp = new Panel();
    cp.setLayout(null);
    add(cp);

    setResizable(false);
    setVisible(true);
    
    Dialog dialog = new MyDialog();
    dialog.setVisible(true);
  }

  class MyDialog extends Dialog
  {
    MyDialog()
    {
      super((Frame)null, "Frage", true);
      add(new Button("Testing"));
      setSize(100, 100);
      addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    }

  }

  public static void main(String[] args) {
    new test("test");
  }
}

Ich nehm also mal an das die Fehler von wo anders herrühren.
Poste doch mal die ganze Fehlermeldung und die komplette myDialog-Klasse.
 

mknapp

Mitglied
Code:
import java.awt.*;
import java.awt.event.*;

class MyDialog 
extends Dialog
implements ActionListener

{
  public MyDialog(Frame owner){
	  super ((Frame)null, "", true);
	  setBackground(Color.lightGray);
	  setLayout(new BorderLayout());
	  setResizable(false);
	  Point parloc = owner.getLocation();
	  setLocation(parloc.x + 30, parloc.y + 30);
	  add(new Label("Schließen"), BorderLayout.CENTER);
      Panel panel = new Panel();
      panel.setLayout(new FlowLayout(FlowLayout.CENTER));
      Button button = new Button("Ok");
      button.addActionListener(this);
      panel.add(button);
      add(panel, BorderLayout.SOUTH);
      setVisible(true);
      pack();
  }
  
  public void actionPerformed(ActionEvent event){
	  String cmd = event.getActionCommand();  
      if (cmd.equals("Ok")) {
    	  setVisible(false);
    	  dispose();
      }
  }
}


die Fehlermeldungen lauten:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: null owner window
at java.awt.Window.ownedInit(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Dialog.<init>(Unknown Source)
at MyDialog.<init>(MyDialog.java:10)
at MyMenu.actionPerformed(Menu.java:33)
at java.awt.MenuItem.processActionEvent(Unknown Source)
at java.awt.MenuItem.processEvent(Unknown Source)
at java.awt.MenuComponent.dispatchEventImpl(Unknown Source)
at java.awt.MenuComponent.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 

Chris_1980

Bekanntes Mitglied
Code:
  public MyDialog(Frame owner)
  { 
      super ((Frame)null, "", true); 
      setBackground(Color.lightGray); 
      setLayout(new BorderLayout()); 
      setResizable(false); 
//      Point parloc = owner.getLocation(); 
//      setLocation(parloc.x + 30, parloc.y + 30); 
      add(new Label("Schließen"), BorderLayout.CENTER); 
      Panel panel = new Panel(); 
      panel.setLayout(new FlowLayout(FlowLayout.CENTER)); 
      Button button = new Button("Ok"); 
      button.addActionListener(this); 
      panel.add(button); 
      add(panel, BorderLayout.SOUTH); 
      pack(); 
      setVisible(true);       
  }
 

Marco13

Top Contributor
Moment mal - du übergibst dem Dialog doch jetzt schon den owner - schreib' den doch einfach dort rein, wo jetzt das (Frame)null steht!? ???:L
 

Chris_1980

Bekanntes Mitglied
naja, sein eigentliches Problem ist ja, das er nicht in der Lage ist sich ne Referenz auf seinen Frame zu behalten und diesen dann eben an den Konstruktor weiterzugeben. :?
 

Marco13

Top Contributor
Ach sorry. Naja. Man könnte jetzt ganz brutal sein, und dem "MyMenu" im Konstruktor den Frame mitgeben, den es dann speichert und an den Dialog weiterreichen kann....
 
G

Guest

Gast
ich würde ja gern den Frame mitgeben, das Problem ist nur, ich weiß die Bezeichnung des Frames nicht. Es funktioniert weder mit 'wnd', noch mit 'this', auch nicht mit 'super.Listing' u.s.w. Es muss doch möglich sein, irgendwie den Bezugsframe übergeben zu können.

Innerhalb der Listing-Klasse, die sich aus Frame ableitet, kann ich schreiben "new MyDialog(this);" und es klappt. Somit kann ich einen Button in den Frame setzen, der beim anklicken den Dialog zeigt. Ich will aber den Dialog angezeigt bekommen, wenn ich im Menu ein entsprechendes MenuItem anklicke. Das geht meines Wissens nur über den Umweg einer eigenen Menu-Klasse. In dieser kann ich aber leider nicht mehr mit dem this-Zeiger arbeiten...

Wenn jemand ein einfaches Schema hat, einen (modalen)Dialog über einen Menüpunkt in einem Frame zu öffnen, wäre ich sehr dankbar, wenn er es posten könnte...
 

Chris_1980

Bekanntes Mitglied
wnd ist dein Frame ja? Und den brauchst du im Menu, weil du ihn im Menu an den Dialog übergeben möchtest?

Code:
public class Listing 
extends Frame 
{ 
  public static void main(String[] args) 
  { 
    Listing wnd = new Listing(); 
    wnd.setLocation(0,0); 
    wnd.setMenuBar(new MyMenu(wnd));                 // geändert           
    wnd.setVisible(true); 
    
  } 
... 




class MyMenu 
extends MenuBar 
implements ActionListener 
{
  private Frame owner;                                        // neu
 
  public MyMenu(Frame owner)                             // geändert    
  {
    this.owner = owner;                                         // neu
 
    Menu m; 
    m = new Menu("Datei"); 
    m.add(new MenuItem("Beenden")); 
    add(m); 
... 
} 
public void actionPerformed(ActionEvent event){ 
   String cmd = event.getActionCommand();  
     if (cmd.equals("Beenden")) { 
       MyDialog my = new MyDialog(owner);             // geändert    
      } 
  } 
} 
... 




class MyDialog 
extends Dialog 
{ 
  public MyDialog(Frame owner){ 
     super (owner, "", true); 
     setBackground(Color.lightGray); 
...
 

mknapp

Mitglied
Juhuu, es hat geklappt! Vielen Dank Chris, du hattest die Lösung! Danke auch an alle anderen, die sich bemüht haben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Dialog wird nach Schließung neu geöffnet Java Basics - Anfänger-Themen 4
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
P Threads Im Dialog geöffneter Thread zeichnet nicht Java Basics - Anfänger-Themen 4
G Dialog Java Basics - Anfänger-Themen 2
T requestFocus() nach modalem Dialog Java Basics - Anfänger-Themen 3
J Über ... Dialog (Mac OS) Java Basics - Anfänger-Themen 8
B Bestimmungspfad im Dialog auswaehlen Java Basics - Anfänger-Themen 9
S Dialog im Thread Java Basics - Anfänger-Themen 2
J Willkürlich geöffnetes Fenster/Dialog anspielen? Java Basics - Anfänger-Themen 3
D Eingabe aus Dialog, Ergebnis an Panel Java Basics - Anfänger-Themen 2
H customized dialog Java Basics - Anfänger-Themen 2
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
J SWT / Datei-Öffnen Dialog Java Basics - Anfänger-Themen 2
S Dialog dynamisch vergrößern Java Basics - Anfänger-Themen 2
jnoob Checkbox in Dialog Dynamisch erstellen Java Basics - Anfänger-Themen 2
H Internes Dialog im Programm Java Basics - Anfänger-Themen 15
Q Wie öffne ich einen "Speichern unter" - Dialog? Java Basics - Anfänger-Themen 2
G Button soll Speicher Dialog aufrufen Java Basics - Anfänger-Themen 10
D dialog listener? Java Basics - Anfänger-Themen 2
F Vom Dialog zum Hauptframe Java Basics - Anfänger-Themen 3
M HTML in JOptionPane-Dialog aber keine Links Java Basics - Anfänger-Themen 6
G Controls einem Dialog uebergeben Java Basics - Anfänger-Themen 4
M Dialog im undecorated Fullscreen Java Basics - Anfänger-Themen 2
M JOptionPane - Dialog Java Basics - Anfänger-Themen 6
G Dialog soll nicht in Vordergrund springen Java Basics - Anfänger-Themen 13
I Dialog - "Ja" / "Nein" abfangen Java Basics - Anfänger-Themen 3
I SaveFile Dialog - wie realisieren ? Java Basics - Anfänger-Themen 4
G Dialog wird nicht angezeigt Java Basics - Anfänger-Themen 3
J Dateiöffnen-Dialog und einlesen Java Basics - Anfänger-Themen 6
K SourceFolder Dialog Java Basics - Anfänger-Themen 8
Bernasconi Dialog und Fenster Liste? Java Basics - Anfänger-Themen 10
V Text aus Dialog auslesen. Java Basics - Anfänger-Themen 3
E "Datei öffnen"-Dialog Java Basics - Anfänger-Themen 2
K Probleme mit AWT Dialog Java Basics - Anfänger-Themen 8
5 File->Open Dialog mit nachheriger Aktion ausführen. Java Basics - Anfänger-Themen 3
G Schrift-Auswahl-Dialog? Java Basics - Anfänger-Themen 6
M JFileChooser Überschreiben Dialog? Java Basics - Anfänger-Themen 2
C Dialog immer vor Hauptfenster anzeigen Java Basics - Anfänger-Themen 9
T Wie öffne ich einen Dialog? Java Basics - Anfänger-Themen 3
D Dialog mit eigenem Bild Java Basics - Anfänger-Themen 7
F Dialog mit allen verfügbaren Druckern Java Basics - Anfänger-Themen 2
G Input Dialog Problem Java Basics - Anfänger-Themen 11
F Dialog zum Durchsuchen von Verzeichnissen nach Datei Java Basics - Anfänger-Themen 11
V List mit Dialog Java Basics - Anfänger-Themen 3
V Ein Fenster durch Menu-Dialog schliessen Java Basics - Anfänger-Themen 2
I Dialog Fenster anzeigen lassen. Java Basics - Anfänger-Themen 2
A Tabulator in Dialog Java Basics - Anfänger-Themen 2
P Funktion einer anderen Klasse aus einem Dialog aufrufen Java Basics - Anfänger-Themen 8
G Dialog-Problem Java Basics - Anfänger-Themen 6
G Logging-Ausgabe in einem Dialog Java Basics - Anfänger-Themen 2
DEvent modaler dialog: showmodal ? Java Basics - Anfänger-Themen 4
EagleEye Dialog Java Basics - Anfänger-Themen 2
M Ändern einer Socket-Eigenscheft aus einem modalen Dialog? Java Basics - Anfänger-Themen 6
J Wert in Dropdown Menü kursiv schrieben Java Basics - Anfänger-Themen 19
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
H Befehle in einem Menü aktivieren Java Basics - Anfänger-Themen 1
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
J Zusätzliches Menü in einem Terminal erstellen Java Basics - Anfänger-Themen 0
J Panel und Menü Java Basics - Anfänger-Themen 6
J Java Anwendungs-Menü Java Basics - Anfänger-Themen 8
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
J Menü mit mehreren Bildern Java Basics - Anfänger-Themen 5
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
G menü in simulation Java Basics - Anfänger-Themen 3
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
1 Menü mit Buttons erstellen Java Basics - Anfänger-Themen 10
M Login-Menü Java Basics - Anfänger-Themen 7
MisterSeven Netbeans - Dropdown Menü erstellen? Java Basics - Anfänger-Themen 4
A Menü Java Basics - Anfänger-Themen 7
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
TheKing Java-Menü Machen Java Basics - Anfänger-Themen 7
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
J Java-Menü Machen Java Basics - Anfänger-Themen 7
Antoras Tab über Menü ansteuern Java Basics - Anfänger-Themen 2
G Rechtsklick Menü? Java Basics - Anfänger-Themen 2
G Strich im Menü Java Basics - Anfänger-Themen 2
D JApplet menü Java Basics - Anfänger-Themen 8
A Menü aktivieren Java Basics - Anfänger-Themen 5
N Von einem Menü in Untermenü Java Basics - Anfänger-Themen 3
M Menü Programmieren Java Basics - Anfänger-Themen 2
T Wie kann ich andere Programme in Java über ein Menü öffnen? Java Basics - Anfänger-Themen 12
M Einfaches Menü erstellen Java Basics - Anfänger-Themen 106
T Rechsklick menü erstellen Java Basics - Anfänger-Themen 2
J Menü-strip beenden-knopf mit Ende des Programms belegen ? Java Basics - Anfänger-Themen 2
D Menü soll immer da bleiben - Frames sollen wechseln Java Basics - Anfänger-Themen 3
S RadioButtons im Menü Java Basics - Anfänger-Themen 5
M statt drop down menü - buttons Java Basics - Anfänger-Themen 5
S Menü addActionListener Java Basics - Anfänger-Themen 11
A Java-Konsolen Menü Java Basics - Anfänger-Themen 6
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
C Swing-Fenster mit Menü- und Toolbar Java Basics - Anfänger-Themen 3
F Menü erstellen Java Basics - Anfänger-Themen 14
G PopupMenu; Welches Menü war's denn nun? Java Basics - Anfänger-Themen 6
B Was mach ich falsch mit einem Menü in Swing Java Basics - Anfänger-Themen 2
T Problem bei Menü Java Basics - Anfänger-Themen 2
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben