Java/Tutorials/Entwicklung eines einfachen Karteneditors III/Kapitel 2

Aus Scientia
Version vom 24. Januar 2011, 12:21 Uhr von Alexis Hiemis (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Damit auch die Passmap, auch im Karteneditor gespeichert wird, bzw. das man sie Laden kann. Fügen wir folgende kleine Änderungen ein:

In der Klasse KartenMenü in der Methode speichern, fügen wir folgendes in die speichern Methode ein:

schreibe.writeObject(fenster.aktuelleKarte.passmap);

Es muss so aussehen wie hier dann, die passmap muss zuletzt gespeichert werden, die reihenfolge muss strikt eingehalten werden oder es kommt zu Fehlern!

	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.writeObject(fenster.aktuelleKarte.passmap);
			schreibe.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


In der Klasse KartenMenü in der Methode speichern, fügen wir folgendes in die laden Methode ein:

int passmap[]=(int[]) lese.readObject();

Damit hohlen wir erstmal unsere Passmap aus der Kartendatei. Anschließend geben wir die passmap an die geladene Karte weiter. Dies erfolgt durch den nächsten befehl.

fenster.aktuelleKarte.passmap=passmap;

Am Ende muss es so aussehen:

	public void laden()
	{
		try {
			JFileChooser speicherDialog=new JFileChooser();
			speicherDialog.showOpenDialog(fenster);
			FileInputStream datei=new FileInputStream(speicherDialog.getSelectedFile());
			BufferedInputStream buf=new BufferedInputStream(datei);
			ObjectInputStream lese = new ObjectInputStream(buf);
 
			int[][]karte=(int[][]) lese.readObject();
			String name=(String) lese.readObject();
			String dateiname=(String) lese.readObject();
			int passmap[]=(int[]) lese.readObject();                   //Neu, Laden der Passmap
			fenster.aktuelleKarte=new Karte(karte,dateiname, name);
			fenster.aktuelleKarte.passmap=passmap;                     //Neu, zuweisen der Passmap
			lese.close();
			fenster.ansicht.changeKarte();
			fenster.palette.repaint();
			fenster.ansicht.repaint();
			fenster.ansicht.scroll.repaint();
			fenster.repaint();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}