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)
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(); } }