Java/Tutorials/Karteneditor Kapitel 10

Aus Scientia
Wechseln zu: Navigation, Suche

In diesen Kapitel behandeln wir das Speichern von Karten. Um möglichst die Karte zu Speichern, werden wir die Serialize-Schnittstelle von Java verwenden, das heißt alle Klassen, die das Interface Serializable implementiert haben, kann man mit dieser Methode speichern, von Haus aus sind fast alle Klassen von Java mit diesen Interface Implementiert, vorallem die einfachen Datentypen wie Interger und String. So das wir einfach unseren int Array sowie alle Strings speichern können. Die Klasse zum serialisieren von Objekten, also String und Interger ist die Klasse ObjectOutputStream, mit der Methode writeObject() können wir dann alles Speichern. Nun benötigten wir nur noch den SpeicherDialog, hierfür bietet uns Java einen bereits Fertigen SpeicherDialog an und zwar die Klasse JFileChooser, die sowohl als Speicher als auch Lade-Dialog von Karten verwendet werden kann. Über die Methode showSaveDialog(fenster); sagen wir das wir einen SpeicherDialog brauchen und mit der Methode getSelectedFile() bekommen wir dann den Pfad und den eingegeben Dateinamen herraus. Und dies übergeben wir dann einen FileOutputStream, dieser wird Benötigt damit wir der Klasse ObjectOutputStream sagen können. Wo sie die Daten reinschreiben soll, weil es ist auch möglich Daten über das Internet bzw. Netzwerk zu versenden.

public class KartenMenü extends JMenuBar{
	KartenFenster fenster;
	JMenu datei=new JMenu("Datei");
	JMenuItem neu=new JMenuItem("Neue Karte");
	JMenuItem speichern=new JMenuItem("Karte Speichern");
	JMenuItem laden=new JMenuItem("Karte Laden");
 
	public KartenMenü(KartenFenster kfenster) {
		fenster=kfenster;
		neu.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				neu();
			}
		});
 
		laden.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				laden();
			}
		});
		speichern.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				speichern();
			}
		});
		datei.add(neu);
		datei.add(speichern);
		datei.add(laden);
		add(datei);
	}
 
	public void neu()
	{
		new KartenDialog(fenster);
	}
 
	public void laden()
	{
 
	}
 
	public void speichern()
	{
		try {
			JFileChooser speicherDialog=new JFileChooser();
			speicherDialog.showSaveDialog(fenster);
			FileOutputStream datei=new FileOutputStream(speicherDialog.getSelectedFile());
			BufferedOutputStream buf=new BufferedOutputStream(datei);
			ObjectOutputStream schreibe = new ObjectOutputStream(buf);
			schreibe.writeObject(fenster.aktuelleKarte.karte);
			schreibe.writeObject(fenster.aktuelleKarte.kartenName);
			schreibe.writeObject(fenster.aktuelleKarte.tilesetDateiname);
			schreibe.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

zurück Kapitel 9 - Index - weiter Kapitel 11