Von einem JDialog einen neuen JDialog aufrufen

  • Themenstarter Themenstarter eismann
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
E

eismann

Gast
Habe eine Frage zu den JDialogs!

Ich rufe von meinem Hauptfenster (JFrame) einen JDialog auf! In diesem JDialog möchte ich nun wiederrum einen neuen JDialog aufrufen. Dies lässt der Compiler jedoch nicht zu. Welche Abhilfen gibt es?
Danke im Vorraus 😀

mfg
Eismann[/b]
 
L-ectron-X hat gesagt.:
Doch das geht. Du kannst einen neuen JDialog aus einem JFrame oder auch aus einem JDialog heraus öffnen.
Schau dir dazu mal die Konstruktoren von JDialog an: http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JDialog.html

Hab ich mir ja auch gedacht aber...

Wenn ich im Konstruktor des ersten Dialog das Element für den 2. Dialog erzeugen will, erkennt er es nicht.
Hier mein Code vom Konstruktor des 1. Dialoges:

Code:
    private NeueAnmeldung_dlg nA;
    public Anmeldefenster_dlg(java.awt.Frame parent, boolean modal)
    {
        
        super(parent, modal);
        
        initComponents();
        nA=new NeueAnmeldung_dlg(this,true);// diese Zeile wird vom Compiler nicht verstanden???!!!
        
        cbDBaktualisieren();
        
    }

Möchte ich es nun compilieren kommt folgende Fehlermeldung:
Code:
Personenerfassung/Anmeldefenster_dlg.java [43:1] cannot resolve symbol
symbol  : constructor NeueAnmeldung_dlg (Personenerfassung.Anmeldefenster_dlg,boolean)
location: class Personenerfassung.NeueAnmeldung_dlg
        nA=new NeueAnmeldung_dlg(this,true);
           ^
1 error
Errors compiling Anmeldefenster_dlg.

Mein zweiter Versuch war es dann von meinem Hauptfenster aus einen weiteres JFrame aufzurufen und nicht einen JDialog( kann man ja schnell im Konstruktor umstellen). Dadurch konnte ich jedoch meinen 2. Dialog aufrufen, jedoch wenn ich von meinem Hauptfenster aus nun den 1. Dialog aufrief(JFrame) wurde dieser sofort wieder geschlossen? Jetzt hab ich echt keine Ahnung mehr. :roll:

Bitte, bitte um Hilfe gegebenenfalls mit BspCode
DANKE[/b]
 
Was für einen Dialog verwendest du? Sieht furchtbar nach einer Mischung von AWT und Swing aus ...

edit ach ja, und gewöhne dir am besten mal ein paar grundlegende Sprachkonventionen an, wie z. B. keine Unterstriche in Variablennamen zu verwenden 😉
 
SamHotte hat gesagt.:
Was für einen Dialog verwendest du? Sieht furchtbar nach einer Mischung von AWT und Swing aus ...

edit ach ja, und gewöhne dir am besten mal ein paar grundlegende Sprachkonventionen an, wie z. B. keine Unterstriche in Variablennamen zu verwenden 😉

Nur Swing
 
SamHotte hat gesagt.:
Was für einen Dialog verwendest du? Sieht furchtbar nach einer Mischung von AWT und Swing aus ...

edit ach ja, und gewöhne dir am besten mal ein paar grundlegende Sprachkonventionen an, wie z. B. keine Unterstriche in Variablennamen zu verwenden 😉

Keine einzige Variable hat im Namen einen Unterstrich :!:
 
Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MeinJFrame extends JFrame {
   public MeinJFrame(String titel) {
      super(titel);
      setSize(600, 500);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      JButton button = new JButton("MeinJDialog öffnen");
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            new MeinJDialog(MeinJFrame.this, true).setVisible(true);
         }
      });
      
      JPanel panel = new JPanel();
      panel.add(button);
      add(panel, BorderLayout.SOUTH);
   }
   
   public static void main(String[] args) {
      new MeinJFrame("MeinJFrame").setVisible(true);
   }
}

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

public class MeinJDialog extends JDialog {
   private static int locationX, locationY, counter;

   public MeinJDialog(MeinJDialog dialog, boolean modal) {
      super(dialog, modal);
      setSize(300, 250);
      setLocation(locationX, locationY);
      initWindow();
   }
   
   public MeinJDialog(MeinJFrame frame, boolean modal) {
      super(frame, modal);
      setSize(300, 250);
      setLocationRelativeTo(frame);
      initWindow();
   }
   
   private void initWindow() {
      locationX += 30;
      locationY += 30;
      counter++;

      setTitle("MeinJDialog "+String.valueOf(counter));
      setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

      JButton button = new JButton("MeinJDialog öffnen");
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            new MeinJDialog(MeinJDialog.this, true).setVisible(true);
         }
      });
      
      JPanel panel = new JPanel();
      panel.add(button);
      add(panel, BorderLayout.SOUTH);
   }

   public static void main(String[] args) {
      new MeinJFrame("MeinJFrame").setVisible(true);
   }
}
 
HI L-ectron-X!!

Erstmal recht herzlichen Dank für deine Hilfe. Ich hab den Code sofort ausprobiert bekomme jedoch noch einen Fehler: 😳

Code:
Beziehungtest/MeinJDialog.java [16:1] cannot resolve symbol
symbol  : class MeinJFrame 
location: class Beziehungstest.MeinJDialog
   public MeinJDialog(MeinJFrame frame, boolean modal) { 
                      ^
Beziehungtest/MeinJDialog.java [16:1] MeinJDialog(Beziehungstest.MeinJDialog,boolean) is already defined in Beziehungstest.MeinJDialog
   public MeinJDialog(MeinJFrame frame, boolean modal) { 
          ^
Beziehungtest/MeinJDialog.java [44:1] cannot resolve symbol
symbol  : class MeinJFrame 
location: class Beziehungstest.MeinJDialog
      new MeinJFrame("MeinJFrame").setVisible(true); 
          ^
3 errors
Errors compiling MeinJDialog.

:autsch:
 
Ich denke nicht, dass du genau den Code getestet hast, den ich oben gepostet habe.
Du hast noch ein Element eingefügt. Vermutlich eine Package-Deklaration.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben