Java/Tutorials/Karteneditor Kapitel 10
| Entwicklung eines einfachen Karteneditors | |
|---|---|
| Autor | |
| Thematik | Java |
| Vorraussetzungen | Programme: Fähigkeiten: |
| Andere Teile |
Material |
In diesen Kapitel behandeln wir das Speichern von Karten. Um die Karte zu speichern, werden wir die Serialize-Schnittstelle von Java verwenden. Alle Klassen, die das Interface Serializable implementiert haben, kann man mit dieser Methode speichern. Von Haus aus sind fast alle Klassen mit diesem Interface implementiert. Um unsere Karte zu sichern, müssen wir unser Int-Array und einige Strings speichern. Beide haben die entsprechende Schnittstelle implementiert. Die Klasse zum serialisieren von Objekten, also String und Integer, 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 eingegebenen Dateinamen heraus. Dies übergeben wir dann einem FileOutputStream. Dieser wird benötigt, damit wir der Klasse ObjectOutputStream sagen können, wo sie die Daten reinschreiben soll, da es auch möglich ist 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(); } } }