Java/Tutorials/Karteneditor Kapitel 9

Aus Scientia
Wechseln zu: Navigation, Suche

In diesen Abschnitt behandeln wir, wie wir eine Neue Karte anlegen. Der größte Teil wird aber der Dialog für das erstellen von Karten ausmachen, weil das eigentlich anlegen einer neuen Karte ist nicht sehr viel, aber für den Dialog müssen wir einiges erstellen. Als erstes legen wir uns eine Klasse KartenDialog an, diese leiten wir von JDialog ab und wie immer übergeben wir die KartenFenster Klasse. Wir verwenden ein JDialog aus dem grund, das beim erstellen einer neuen Karte man im KartenFenster nichts mehr ändern kann.Da wir ein JDialog verwenden übergeben wir ein übergeordnetes Fenster an dieser und vergeben auch gleich einen Titel. Dies erfolgt alles in der super()-Anweisung. Diese Ruft ein übergeordneten Konstrutkor von JDialog auf.

public class KartenDialog extends JDialog{
	KartenFenster fenster;
 
	public KartenDialog(KartenFenster kfenster)
	{
		super(kfenster, "Karte erstellen");
		fenster=kfenster;
	}
}

Was genau brauchen wir alles? Wir benötigen die Höhe und Breite der Karte, sowie den Kartennamen und den Tileset Dateinamen(dies kann man eigentlich geschickter einbauen, aber wir wollen es erstmal nur bei der Namen angabe belassen). Daher wir brauchen insgesamt 4 JLabel (für Beschreibung der Eingabe) und 4 JTextField für die eigentliche eingabe. Sowie ein Okay-Button von Type JButton.

public class KartenDialog extends JDialog{
	KartenFenster fenster;
 
	JTextField kartenName=new JTextField();
	JTextField kartenBreite=new JTextField();
	JTextField kartenHöhe=new JTextField();
	JTextField tilesetDateiname=new JTextField();
 
	JLabel name=new JLabel("Name:");
	JLabel dateiname=new JLabel("Tileset:");
	JLabel breite=new JLabel("Karten Breite:");
	JLabel höhe=new JLabel("Karten Höhe:");
 
	JButton okay=new JButton("okay");
 
	public KartenDialog(KartenFenster kfenster)
	{
		super(kfenster, "Karte erstellen");
		fenster=kfenster;
	}
}

Nun haben wir alle Benötigten Komponenten, nur wie fügen wir diese unseren JDialog hinzu? Wir werden in diesen Beispiel ein FlowLayout verwenden und setzen dies mit der setLayout()-Methide. Und um Sicher zu gehen das alle Label und Textfelder gleich groß sind, legen wir eine Variable Dimension an. wo wir Breite von 100 und die höhe von 20 eintragen. Anschließend setzen wir alle JTextField und JLabel auf diese größe, mit der Methode setPreferredSize(). Das müssen wir machen, weil sonst das FlowLayout dafür sorgt das unser JTextField gerade mal 1px breit ist und dies ist für eine eingabe etwas schwierig. Weiterhin setzen wir die größe unseres JDialog auf 250x200. So das unsere Elemente schön untereinander Angeordnet werden. Anschließend fügen wir alle Komponenten

public class KartenDialog extends JDialog{
	KartenFenster fenster;
 
	JTextField kartenName=new JTextField();
	JTextField kartenBreite=new JTextField();
	JTextField kartenHöhe=new JTextField();
	JTextField tilesetDateiname=new JTextField();
 
	JLabel name=new JLabel("Name:");
	JLabel dateiname=new JLabel("Tileset:");
	JLabel breite=new JLabel("Karten Breite:");
	JLabel höhe=new JLabel("Karten Höhe:");
 
	JButton okay=new JButton("okay");
 
	public KartenDialog(KartenFenster kfenster)
	{
		super(kfenster, "Karte erstellen");
		fenster=kfenster;
 
		Dimension dim=new Dimension(100, 20);
 
		kartenBreite.setPreferredSize(dim);
		kartenHöhe.setPreferredSize(dim);
		kartenName.setPreferredSize(dim);
		tilesetDateiname.setPreferredSize(dim);
 
		höhe.setPreferredSize(dim);
		breite.setPreferredSize(dim);
		name.setPreferredSize(dim);
		dateiname.setPreferredSize(dim);
 
 
		setSize(250,200);
		setLayout(new FlowLayout());
 
		add(name);
		add(kartenName);
 
		add(breite);
		add(kartenBreite);
 
		add(höhe);
		add(kartenHöhe);
		add(dateiname);
		add(tilesetDateiname);
		add(okay);
		setVisible(true);
	}
}

Nun benötigen wir wieder ein ActionListener womit wir beim betätigen auf den Button "okay" eine Methode mit den Namen erstelleKarte() Aufruft.


public class KartenDialog extends JDialog{
	KartenFenster fenster;
 
	JTextField kartenName=new JTextField();
	JTextField kartenBreite=new JTextField();
	JTextField kartenHöhe=new JTextField();
	JTextField tilesetDateiname=new JTextField();
 
	JLabel name=new JLabel("Name:");
	JLabel dateiname=new JLabel("Tileset:");
	JLabel breite=new JLabel("Karten Breite:");
	JLabel höhe=new JLabel("Karten Höhe:");
 
	JButton okay=new JButton("okay");
 
	public KartenDialog(KartenFenster kfenster)
	{
		super(kfenster, "Karte erstellen");
		fenster=kfenster;
 
		Dimension dim=new Dimension(100, 20);
 
		kartenBreite.setPreferredSize(dim);
		kartenHöhe.setPreferredSize(dim);
		kartenName.setPreferredSize(dim);
		tilesetDateiname.setPreferredSize(dim);
 
		höhe.setPreferredSize(dim);
		breite.setPreferredSize(dim);
		name.setPreferredSize(dim);
		dateiname.setPreferredSize(dim);
 
		okay.addActionListener(new ActionListener(){
 
			@Override
			public void actionPerformed(ActionEvent e) {
				erstelleKarte();
			}
		});
 
		setSize(250,200);
		setLayout(new FlowLayout());
 
		add(name);
		add(kartenName);
 
		add(breite);
		add(kartenBreite);
 
		add(höhe);
		add(kartenHöhe);
		add(dateiname);
		add(tilesetDateiname);
		add(okay);
		setVisible(true);
	}
 
	public void erstelleKarte()
	{
	}
}