# Datei öffnen Dialog



## BlubBlub (22. Okt 2010)

Hi, 

ich wollte in meinem selbst geschriebenen Editor mit "Datei öffnen..." eine beliebige Datei
laden wollen, sei es .txt  oder .png oder .gif oder .pdf.

Kann mir da jemand helfen oder eine gute Seite bzw. Tutorial nennen.

Hab es bisher geschaft den Datei öffnen Dialog mit JFileChooser zu erstellen nun fehlt noch das laden
beliebiger Datei in das Editorfenster.


----------



## XHelp (22. Okt 2010)

Öhm. wo genau ist dein Problem? "laden in das Editorfenster" ist keine Beschreibung.

P.S. Warum soll es egal sein, ob txt oder png? Txt ist ja noch ok, da sollte Text stehen. Aber nicht jedes Zeichen bei anderen Formaten lässt sich darstellen.


----------



## TiZi37 (22. Okt 2010)

Also wenn du mit dem JFileChooser eine Datei auswählst und mit OK bestätigst musst du herausfinden, um welchen Typ von Datei es sich handelt(.txt, .jpg) und verschieden reagieren. Wenn es zum Beispiel ein Bild ist könntes du es in etwa so machen:
img ist in diesem Fall ein ImageIcon

```
dialog.showOpenDialog(null);
					File file = dialog.getSelectedFile();
					Image image;
					
						image = ImageIO.read(file);
						img.setImage(image);
						picBox.setIcon(img);
						panel.add(picBox);
						frame.add(panel);
```

Bin aber selber noch ein Anfänger in Java aber ich denke so sollte es funktionieren.


----------



## TiZi37 (22. Okt 2010)

oh ok habe vergessen zu sagen das picBox in dem Fall ein JLabel ist. Dann sollte das Bild öffnen klappen.


----------



## BlubBlub (22. Okt 2010)

achso, ich muss also für alle dateien die ich in mein editorfenster laden will, fallunterscheidungen machen
und jeden fall dann individuell behandeln.
also gut ich möchte mir dann vornehmen .txt, .gif , .jpg  und .pdf Dateien laden zu können.
die entsprechende Datei soll in meinem editorfenster angezeigt werden.
da ich ja ja nicht nur .txt dateien laden will möchte ich auf eine JTextArea verzichten die beim 
starten des editors initialisiert wird.

vielleicht kann mir ja jemand erstmal sagen wie ich also eine test.txt die auf meinem desktop gespeicher ist in das editorfenster laden kann in eben beschriebener art und weise.
also damit ich das schritt für schritt machen kann. danach kümmer ich mich um meine weiteren gesetzten ziele.


----------



## XHelp (22. Okt 2010)

Let me google that for you
Du kannst ja nicht "mal eben" eine komponente erstellen, die alles anzeigen kann.
Außerdem hast du immer noch die Frage nicht beantwortet, was dieses "editorfenster" ist.


----------



## BlubBlub (22. Okt 2010)

haha, der link ist ja geil xD 

also dieses editorfenster ist einfach nur ein fenster mit einer leiste oben in der ich durch
ein klick auf "Datei öffnen..." die möglichkeit haben möchte die vier verschienden dateien laden zu können.
also so ne art import anweisung, vielleicht ist das ja eine treffendere bezeichnung.
wollte einfach nur das in diesem editorfenster entweder der inhalt einer textdatei angezeigt wird oder
ein bild angezeigt wird oder halt eine pdf datei.

aaaalsooo wenn du jetzt sagst das mit der textdatei funtkioniert nicht ohne JTextArea dann werde ich wenn ich einen text laden will ein JTextArea erstellen und den inhalt da rein laden.
wenn ich ein bild reinladen will dann werd ich keine JTextArea erstellen sondern so vorgehen wie esTiZi37 vorgeschlagen hat.

anscheinend ist das so der weg den man hier einschlagen muss.


zum besseren verständngnis mein code sieht bisher so aus:


```
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;


public class MyEditor extends JFrame
{
	public MyEditor()
	{
		   super("Editor");
	       setLocation(300, 300);
	       setSize(500, 500);
	       
	       addWindowListener( new MyWindowAdapter() ); 
	       setLocationRelativeTo(null);
	       
	       JPanel panel = new JPanel();
	       JMenuBar menuBar = new JMenuBar();
	       JMenu fileMenu = new JMenu("Datei");
	       JMenu helpMenu = new JMenu("Hilfe");
	       
	       getContentPane().add(panel);
	       menuBar.add(fileMenu);
	       menuBar.add(helpMenu);
	       setJMenuBar(menuBar);
	       
	       fileMenu.setMnemonic(KeyEvent.VK_D);								// Mnemonic ALT + Taste
	       helpMenu.setMnemonic(KeyEvent.VK_H);
	       
	       final JFileChooser fc = new JFileChooser(); 
	       
	       final JTextArea textArea = new JTextArea(); 
	       add( new JScrollPane(textArea) );
	       
	       //################# Filemenu => Untermenus ###############################################################################################
	       fileMenu.add(new AbstractAction()
	       { 
	    	   { 
	    		   putValue( Action.NAME, "Datei öffnen..." ); 
	    		   putValue( Action.ACCELERATOR_KEY , KeyStroke.getKeyStroke("ctrl O") ); 
	    		   putValue( Action.SMALL_ICON,     new ImageIcon(MyEditor.class.getResource("/toolbarButtonGraphics/general/Open16.gif")) ); 
	    	   }	 
	
	    	   public void actionPerformed( ActionEvent e )
	    	   { 
	    		   FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images & Text Files", "jpg", "gif", "txt");					//zeigt nur die angegebenen Dateien an
	    		   fc.setFileFilter(filter);

	    		   //fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
	    	       //fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
	    	       //fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
	    		   
	    		   int returnVal = fc.showOpenDialog( null );
	    		   
	    		   //if(returnVal == JFileChooser.APPROVE_OPTION) {																							//bei Drücken von "Öffnen" if Bedingung ausführen
	    		    //   System.out.println("You chose to open this file: " +
	    		      //      fc.getSelectedFile().getName());
	    		    //}
	    		   
	    		   if ( fc.showOpenDialog( null ) == JFileChooser.APPROVE_OPTION ) 
	    	        { 
	    	          FileReader in = null; 
	    	          try { 
	    	            textArea.read( in=new FileReader(fc.getSelectedFile()), null ); 
	    	          } 
	    	          catch ( IOException ex ) { 
	    	            textArea.setText( ex.getMessage() ); 
	    	          } 
	    	          finally { 
	    	            try { in.close(); } catch ( Exception ex ) { } 
	    	          } 
	    	        } 

	    	   } 
	       });
	       
	       fileMenu.addSeparator();
	       
	       fileMenu.add(new AbstractAction()
	       { 
	    	   { 
	    		   putValue( Action.NAME, "Speichern als..." ); 
	    		   putValue( Action.ACCELERATOR_KEY , KeyStroke.getKeyStroke("ctrl S") ); 
	    		   putValue( Action.SMALL_ICON,     new ImageIcon(MyEditor.class.getResource("/toolbarButtonGraphics/general/SaveAs16.gif")) ); 
	    	   }	 
	
	    	   public void actionPerformed( ActionEvent e )
	    	   { 
	    		   int returnVal = fc.showSaveDialog(null);
	    	   } 
	       });
	       
	       fileMenu.addSeparator();
	       
	       fileMenu.add(new AbstractAction()
	       { 
	    	   { 
	    		   putValue( Action.NAME, "Drucken als..." ); 
	    		   putValue( Action.ACCELERATOR_KEY , KeyStroke.getKeyStroke("ctrl P") ); 
	    		   putValue( Action.SMALL_ICON,     new ImageIcon(MyEditor.class.getResource("/toolbarButtonGraphics/general/Print16.gif")) ); 
	    	   }	 
	
	    	   public void actionPerformed( ActionEvent e )
	    	   { 
	    		   System.out.println("Drucken als...");
	    	   } 
	       });
	       
	       fileMenu.addSeparator();
	       
	       fileMenu.add(new AbstractAction("Beenden")
	       	{
	    	   public void actionPerformed(ActionEvent e){System.exit(0);}
	       	});
	       //###################### Filemenu => Untemenues (Ende) #######################################################################################
	       
	       //##################### Helpmenu => Untermenues ##############################################################################################
	       helpMenu.add(new AbstractAction()
	       { 
	    	   { 
	    		   putValue( Action.NAME, "Editor-Hilfe" ); 
	    		   putValue( Action.ACCELERATOR_KEY , KeyStroke.getKeyStroke("F1") ); 
	    		   putValue( Action.SMALL_ICON,     new ImageIcon(MyEditor.class.getResource("/toolbarButtonGraphics/general/Help16.gif")) ); 
	    	   }	 
	
	    	   public void actionPerformed( ActionEvent e )
	    	   { 
	    		   System.out.println("Hilfe");
	    	   } 
	       });
	       //##################### Helpmenu => Untermenues (Ende) ########################################################################################
	       
	       setVisible(true);
	}
}
```


----------



## XHelp (22. Okt 2010)

Du kannst den Text auch in der Konsole ausgeben, wie du es auch immer willst.
JTextArea ist einfach nur eine der Standartkomponenten für Text.

Was die GUI angeht, vermisse ich da irgendwie den LayoutManager
Und die Initializierer-Blöcke brauchst du nicht zwingend, lieber sinnvoll das ganze machen.


----------



## BlubBlub (22. Okt 2010)

Mein Programm ist noch bei weitem nicht fertig, da gibts sicherlich noch so einiges 
was da verbessert werden muss, alles Schritt für Schritt, aber bin natürlich für jede Kritik dankbar.


Nee in der Konsole nicht, das soll ja schon im Fenster ausgegeben werden dazu ist es eigentlich gedacht, dass alles in diesem Fenster angezeigt wird.
Ich dachte halt nur es gebe so eine ultimative Methode mit der ich mir die Falluntscheidungen sparen kann.
So in der Art wie 
	
	
	
	





```
Runtime.getRuntime().exec("cmd /C \"" + pfad + "\"");
```
 aus dem Beispiel Dateien systemunabhängig mit dem Standard-Programm öffnen @ tutorials.de: Tutorials, Forum & Hilfe
 Das pass zwar nicht ganz zu dem was ich vorhabe aber ich meine halt so grob auf diese Beispiel jetzt bezogen, dass man mit einer Zeile unterschiedliche Dateien lädt. 
Aber gut ich mach das dann jetzt mit den Fallunterscheidungen.


----------



## BlubBlub (23. Okt 2010)

So da offenbar keine weiteren Vorschläge kommen, möchte ich mich für die bisherigen Tipps bedanken


----------

