# JDialog und dessen Konstruktor JDialog(JFrame owner)



## Jac (21. Sep 2004)

Hi, 

Mein Problem geht in Richtung JDialog, und dessen KonstruktorJDialog(JFrame owner).

Ich habe:
1. eine Anwendung die ein Fenster + Menuleiste macht.   (JFrame)
2. des weiteren wird in einer anderen Klasse ein JFileChooser+TextArea(mit Text aus der
gewählten Datei) gemacht   (JDialog)

FileCHooser ruft man dann durch klicken auf einen MenuEintrag auf.

Die 1.  Anwendung ruft die 2. durch einen Konstruktor auf.
ok, funzt auch soweit. 


Mein Problem ist nun: 
Ich bekomm's nicht auf die Reihe diesen owner 
aus dem Konstruktor von JDialog richtig zu setzen, 
so das ich das Menu des "Mutterfensters" benutzen kann, ohne das 
das Fenster der 2. Klasse(die mit dem JFileChooser+ der TextArea)
dahinter verschwindet.

Ich hoffe es ist verständlich, was ich meine und
ihr koennt mir helfen.

'Jac.


----------



## foobar (21. Sep 2004)

Poste doch mal etwas Code.


----------



## Guest (21. Sep 2004)

ok, hier der Code:

1. Das "Hauptprogramm mit der grundlegenden GUI und Commands


```
public class JMainChooser {
    
        public static void main (String args[]){
    
    JCommandChooser cmd = new JCommandChooser();
    JGuiChooser guui = new JGuiChooser(cmd);
    guui.setVisible(true);
    }

}

class JGuiChooser extends JFrame{
               
        public JGuiChooser(ActionListener cmd){
                super("JFileChooser mit DateiAuswahl und Ausgabe der Datei in eine JTextArea");
                JFrame parent         = new JFrame();
                JPanel panel             = new JPanel(); 
                JMenuBar mBar       = new JMenuBar(); 
                JMenu datei              = new JMenu("Datei");
                JMenu inout              = new JMenu("Input/Output");
                .......
	....usw.

                open .addActionListener(cmd);
                open.setActionCommand("open");
                close.addActionListener(cmd);
                close.setActionCommand("close");
                .......
	.....usw.
                
                setJMenuBar(mBar); 
                parent.getContentPane().add(panel);
                
                datei.add(open); 
                ......
	.....usw.
                
                addWindowListener(new WindowClosingAdapter(true));
                setSize(800,800);
                setLocation(320,100);
      }      
}

class JCommandChooser extends JFrame implements ActionListener{
        
        public void actionPerformed(ActionEvent e) {
        String string = e.getActionCommand();
        
        if (string.equals("close")){
            System.exit(0); }
        
        else if (string.equals("open")) 
            { ChooserKonstruktor ck = new ChooserKonstruktor(this);}
        
       else if (string.equals("in"))
            {ReadKonstruktor rk = new ReadKonstruktor();
             rk.goandread();}
       
        else if (string.equals("out"))
            {WriteKonstruktor wk= new WriteKonstruktor();
             wk.goandwrite();}
       }
        }       
        }      
         }
```


2. Die Klasse mit dem FileChooser-Konstruktor




```
public class ChooserKonstruktor extends JDialog{
    
    
    public ChooserKonstruktor(JFrame parent) {
       
    super(parent, "Chooser Konstruktor") ;
      
    
    setLocation(370,180);
    setSize(450,450);
    setVisible(true);
      
    JTextArea ta = new JTextArea(20,40);
    JPanel panel = new JPanel();
    getContentPane().add(panel);              
    
    panel.add(ta);
    
               
         JFileChooser chooser = new JFileChooser(); 
            int returnVal = chooser.showOpenDialog(chooser);
            
              if(returnVal == JFileChooser.APPROVE_OPTION) {
                System.out.println("You chose to open this file: " +chooser.getSelectedFile().getName()+"\n");
                File datei = new File(chooser.getSelectedFile().getPath());
                System.out.println("the current path : "+datei.getPath()+"\n");
                System.out.println(datei.getName()+"\n");
                    
 // FileReader versucht die Datei, die ausgewählt wurde auszulesen
                    try{
                    FileReader eingabestrom = new FileReader(datei);
                    int gelesen;
                    StringBuffer text = new StringBuffer(10);
                    boolean ende = false;
        
                        while(!ende){
                        gelesen = eingabestrom.read();
                        if(gelesen == -1)   ende=true;
                        else                text.append((char)gelesen); 
                        }//zu while
                    System.out.println(text);
                    
 //Ausgabe des Dateiinhalts in eine TextArea ta 
                    
                    ta.setLineWrap(true); 
                    ta.setEditable(false);
                    ta.setWrapStyleWord(true);
                    ta.setText(text.toString());
                    JScrollPane sp = new JScrollPane(ta);
                    panel.add(sp);
                    ta.setVisible(true);
                   
                    }//zu try
                    catch(IOException io){System.out.println ("Datei nicht gefunden !");}
                } //zu if
            
             
    } 
  }
```


----------

