# Speichern und Öffnen von einem Zeichenprogramm



## Hansi.85 (31. Jan 2009)

Hallo ich habe mir ein Zeichenprogramm geschrieben mit dem ich Kreise, Rechtecke und dergleichen zeichnen kann. Nun möchte ich diese gerne abspeichern und öffnen können. 
Habe hier was versucht:



```
public void actionPerformed(ActionEvent e) {
		
                            if (e.getActionCommand().equals("speichern")){
		    
                            FileDialog d = new FileDialog(fr, "Datei speichern...",FileDialog.SAVE); 
		    d.setVisible(true); 
		    String dateiname = d.getDirectory(); 
		    dateiname += d.getFile();    
		      
		      
		     BufferedImage img = new BufferedImage(935,680, BufferedImage.TYPE_INT_RGB); 
		     img = (BufferedImage)img; 

		try{ 
		  
		            
		      ImageIO.write(img, "jpeg", new File(dateiname)); 
		      
		} catch (IOException e1) { 
		         e1.printStackTrace(); 
		      }
		}
```

Wollte die Zeichnung als Jpeg Datei Speichern, klappt aber irgendwie nicht. wo können die Porbleme liegen?
Oder soll ich vllt nicht Jpeg nehmen sondern einen anderen Dateitypen?


----------



## Beni (31. Jan 2009)

Du erstellst ein neues schwarzes Bild und speicherst es. Wie und wo kommen denn da deine Kreise und Rechtecke ins Spiel?


----------



## Hansi.85 (31. Jan 2009)

Ja genau, er erstellt nur ein schwarzes Bild. Ich dachte mit dem BufferedImage macht er sozusagen ein Screenshot von meiner zeichenfläche und speichert die. Ist wohl nicht so ne?


----------



## Beni (31. Jan 2009)

Nein... du kannst eigentlich immer davon ausgehen, dass niemand magischerweise deine Probleme löst :wink:

In diesem Fall: du kannst ein Graphics-Objekt mit der Methode "createGraphics" von BufferedImage erzeugen. Und mit diesem Graphics-Objekt kannst du dann die Kreise und Rechtecke auf das Bild zeichnen.


----------



## Hansi.85 (31. Jan 2009)

hab es jetzt hingekriegt, aber mit dem FileChooser und nicht mit dem FileDialog.



```
if (e.getActionCommand().equals("speichern")){
			try {
				JFileChooser fc = new JFileChooser();
				int returnVal = fc.showSaveDialog(log);
				if(returnVal != JFileChooser.APPROVE_OPTION) {
					System.out.println("Keine Datei gewŠhlt");
					return;
				}
			
				File file = fc.getSelectedFile();
				file.createNewFile();
				if(!file.canWrite()) {
					System.out.println("Datei ist nicht schreibbar");
					return;
				}
			
				FileOutputStream fos = new FileOutputStream(file);
				ObjectOutputStream oos = new ObjectOutputStream(fos);
				
				oos.writeObject(model);
				
				oos.close();
				fos.close();
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
```

wollte es aber gerne mit dem FileDialog machen, weil der etwas besser aussieht als der FileChooser. Bekomme es aber irgendwie nicht hin. Muss man dabei viel beachten, bzw ändern?


----------

