Java/Tutorials/Karteneditor Kapitel 8

Aus Scientia
Version vom 15. März 2011, 14:23 Uhr von Alexis Hiemis (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Entwicklung eines einfachen Karteneditors Schwierigkeitsgrad Stern.pngSchwierigkeitsgrad Stern.pngSchwierigkeitsgrad Stern.png
Autor
Thematik Java
Vorraussetzungen Programme:

Fähigkeiten:

Andere Teile

Material

In diesen Kapitel behandeln wir, wie wir das Menü aufbauen. Als erstes legen wir uns eine neue Klasse mit dem Namen KartenMenü an die wir von JMenuBar ableiten. Wie in den vorangegangenen Klassen werden wir beim Konstruktor wieder unsere KartenFenster-Klasse übergeben.

public class KartenMenü extends JMenuBar{
	KartenFenster fenster;
	public KartenMenü(KartenFenster kfenster) {
		fenster=kfenster;
	}
}

Unser Menü wird die Funktionen für das Anlegen einer neuen Karte, das Laden einer Karte und das Speichern einer Karte beinhalten. Deswegen erstellen wir die Methode neu(), laden() und speichern(). Desweiteren legen wir ein Menü mit dem Namen Datei an. Dies erfolgt über die Klasse JMenu.

public class KartenMenü extends JMenuBar{
	KartenFenster fenster;
	JMenu datei=new JMenu("Datei");
 
	public KartenMenü(KartenFenster kfenster) {
		fenster=kfenster;
	}
 
	public void neu()
	{
 
	}
 
	public void laden()
	{
 
	}
 
	public void speichern()
	{
 
	}
}

Nun legen wir unsere Menüpunkte "Neue Karte", "Karte Laden" und "Karte Speichern" über die Klasse JMenuItem an und zwar als Klassenvariablen.

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;
	}
 
	public void neu()
	{
 
	}
 
	public void laden()
	{
 
	}
 
	public void speichern()
	{
 
	}
}

Nun fügen wir unserem Menü die Menüpunkte und Menübalken hinzu. Wir fügen die Menüpunkte unserem Menü "Datei" über die datei.add()-Methode hinzu. Weiterhin fügen wir wiederum unser Menü mit der Methode add() in unseren Menübalken hinzu.

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;
		datei.add(neu);
		datei.add(speichern);
		datei.add(laden);
		add(datei);
	}
 
	public void neu()
	{
 
	}
 
	public void laden()
	{
 
	}
 
	public void speichern()
	{
 
	}
}

Damit bei betätigen der Menüs auch die Methoden neu(), laden() und speichern() aufgerufen werden, fügen wir jedem JMenuItem ein 'ActionListener über die Methode addActionListener hinzu und rufen in dieser Klasse über die Methode ActionPerformed die wir implementieren müssen, die jeweilige Methode auf.

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()
	{
 
	}
 
	public void laden()
	{
 
	}
 
	public void speichern()
	{
 
	}
}

Somit hätten wir unser Menü. Nun wollen wir aber, dass es in unserem Fenster angezeigt wird. Daher legen wir eine Klassenvariable vom Typ KartenMenü an und initialisieren sie genau so wie die vorangegangenen Klassen und zwar übergeben wir wieder das this-Objekt. Nun fügen wir unserem Menü über die Methode add() unser Fenster hinzu und zwar ganz oben, wo ein Menü nun einmal hingehört. Als zweiten Parameter geben wir BorderLayout.NORTH an.

public class KartenFenster extends JFrame{
 
	Karte aktuelleKarte;
	TilePalette palette;
	KartenAnsicht ansicht;
	KartenMenü kartenMenü;
 
	public KartenFenster() {
 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.requestFocus();
		int karte[][]=new int[100][100];
		String name="Unser erste Karte";
		String tilesetDateiname="Tileset.png";
		aktuelleKarte=new Karte(karte, tilesetDateiname, name);
		palette=new TilePalette(this);
 
		//Initialisere KartenAnsicht
		ansicht=new KartenAnsicht(this);
		//Initialisere KartenMenü
		kartenMenü=new KartenMenü(this);
 
		setLayout(new BorderLayout());
 
		add(kartenMenü, BorderLayout.NORTH);
		add(palette, BorderLayout.WEST);
		add(ansicht.scroll , BorderLayout.CENTER);
		//größe des Fensters setzen
		setSize(1024, 768);
		//Setzen eines Fenstertitels
		setTitle("Karteneditor");
	}
}

Und wie immer zum Vergleich:

Karteneditor-menue.png