Frame öffnen klappt nicht?!

KingEldarion

Bekanntes Mitglied
So ich habe die Stadt.java:

Java:
import javax.swing.*;
import java.awt.event.*;

public class Stadt extends JFrame implements ActionListener
{	
	
	int einwohner = 310000;
	int einheiten = 5;
	boolean spieler = false; //true=Spieler false=bot!
	
	
	String einheitentext = "Einheiten:" + einheiten;
	String labeltext = "Einwohner:" + einwohner;
	
	
	//Hintergrundbild
	JLabel labBild = new JLabel("Version: Alpha 1.0.0");
			
	//Menu
	JButton rek = new JButton("Soldaten rekrutieren");
	JButton att = new JButton("Angreifen");
	JButton map = new JButton("Zurück");
	JLabel labEinwohner = new JLabel(labeltext);
	JLabel labEinheiten = new JLabel(einheitentext);
	
	
	public Stadt()
	{
		
		setTitle("Crusade of Future");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		map.addActionListener(this);
		rek.addActionListener(this);
		att.addActionListener(this);
		
		add(labEinwohner);
		add(labEinheiten);
		
		if(spieler == true){
			add(rek);
		}
		else
		{
			add(att);
		}
		
		
	}
	
	public void actionPerformed(ActionEvent evt) {
		if (evt.getActionCommand().equals("Soldaten rekrutieren")){
				
		    }		
	}
	
	Stadt besitzer(boolean b)
	{
		spieler = b;
		return null;
		
	}
	
	void Frame(){
		Stadt frame = new Stadt();
		frame.setSize(1000, 500);
		frame.setResizable(false);
		frame.setVisible(true);
		
	}
	    
	
	static Stadt Brest = new Stadt().besitzer(true);
	static Stadt Paris = new Stadt();
	static Stadt Caen = new Stadt();
	static Stadt Rennes = new Stadt();
	static Stadt Nantes = new Stadt();
	static Stadt LeMans = new Stadt();
	static Stadt Bordeaux = new Stadt();
	static Stadt Toulouse = new Stadt();
	static Stadt Montpellier = new Stadt();
	static Stadt Marseille = new Stadt();
	static Stadt Lyon = new Stadt();
	static Stadt Dijon = new Stadt();
	static Stadt Limoges = new Stadt();
	
	
	
	
}

Nun möchte ich die einzelnen Städte durch einen JButton aus der Map.java öffnen lassen.

Ich habe folgendes versucht:

Einmal das:
Java:
public void actionPerformed(ActionEvent evt) {
		if (evt.getActionCommand().equals("Brest")){
			
			Stadt.Brest.Frame();
		}
		
	}

und einmal das:

Java:
public void actionPerformed(ActionEvent evt) {
		if (evt.getActionCommand().equals("Brest")){
			
Stadt.Brest.setSize(1000, 500);
Stadt.Brest.setResizable(false);
Stadt.Brest.setVisible(true);

		}
		
	}

Beides funktioniert nicht. Ich habe sonst alles gemacht, den Button dem ActionListener hinzugefügt etc.

Wie kann ich es sonst machen?

Übrigens zeigt eclipse mir folgende Fehlermeldung an:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Map.actionPerformed(Map.java:62)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
Zuletzt bearbeitet:

KingEldarion

Bekanntes Mitglied
Was ist daran so unverständlich was ich versucht habe?!:

Ich habe folgendes versucht:

Einmal das:
Java:
public void actionPerformed(ActionEvent evt) {
		if (evt.getActionCommand().equals("Brest")){
			
			Stadt.Brest.Frame();
		}
		
	}

und einmal das:

Java:
public void actionPerformed(ActionEvent evt) {
		if (evt.getActionCommand().equals("Brest")){
			
Stadt.Brest.setSize(1000, 500);
Stadt.Brest.setResizable(false);
Stadt.Brest.setVisible(true);

		}
		
	}

Beides funktioniert nicht. Ich habe sonst alles gemacht, den Button dem ActionListener hinzugefügt etc.

Das sind meine beiden Versuche...
 
C

Camino

Gast
Was ist daran so unverständlich was ich versucht habe?!

Hmm, mir ist noch nicht so ganz klar, was du da überhaupt vorhast. Es sieht alles ein bisschen durcheinander und verwirrend aus. Was soll denn bei den Städten angezeigt werden? Normalerweise hat man einen JFrame in der Anwendung. Und darin kannst du dann deine verschiedenen Städte anzeigen lassen. Vielleicht kannst du mal grob beschreiben, was deine Anwendung denn machen soll.
 

KingEldarion

Bekanntes Mitglied
Also ich habe die Stadt.java, dass ist halt eine Vorlage für alle Städte also wie sie aussehen sollen.
Jeder der unten erstellten Städte ist also ein Typ vom Objekt Stadt oder nicht?

Und da das Objekt Stadt ein JFrame ist, sollte wenn ich diese Methoden ausführe sich doch der JFrame öffnen!

Das tut er aber nicht.
 
C

Camino

Gast
Du willst für jede Stadt einen Frame öffnen? Was soll denn in diesen Frames dargestellt werden? Vielleicht solltest du dir erst nochmal Gedanken über die allgemeine Struktur der Anwendung machen.
 

KingEldarion

Bekanntes Mitglied
Nein muss ich nicht.

Ich will ja nicht alle Städte gleichzeitig öffnen, sondern je nachdem wie ich sie brauche!
Daher will ich erstmal nur wissen wie ich die Stadt Brest öffne!

MfG KingEldarion
 
C

Camino

Gast
Dann würde ich trotzdem das Ganze anders strukturieren. Also nur 1 JFrame für die Anwendung nehmen und je nachdem, was bei den Städten angezeigt werden soll, dies dann inerhalb von dem JFrame anzeigen. Und dann irgendwo (Menü, Toolbar, JComboBox....) die Möglichkeit anbieten, einen Stadt auszuwählen. Was soll denn bei den Städten angezeigt werden?
 

KingEldarion

Bekanntes Mitglied
@Camino
Darum geht es nicht.
Meine Frage war, warum ich den JFrame nicht ausführen kann, nicht wie ich es besser programmieren kann.

Ich meine ich finde gut das du anderen zeigst wie du es machst, aber du solltest dich vllt. mehr auf die Fragen der jeweiligen Leute beziehen und nachdem die Frage beantwortet wurde, zeigen wie du es machen würdest!

Also ich hätte jetzt gerne eine Antwort auf meine Frage...;)
 
C

Camino

Gast
Na ja, ich hab dich jetzt schon dreimal gefragt, was du bei deinen Städten denn überhaupt angezeigt haben willst. Keine Antwort darauf. Dann hab ich dir gesagt, dass dein jetziger Ansatz komplett falsch und Murks ist. Du bist so ziemlich auf dem falschen Weg. So kann man dir leider nicht weiter helfen. Ich klinke mich jetzt hier aus...
 
G

Gast2

Gast
Naja, wenn ich jemanden mit nen paar Pappflügeln auf ne Schlucht zu rennen sehe, dann würde ich ihn auch dezent drauf aufmerksam machen, dass das so nicht unbedingt gut geht ;)

Dein Problem ist immernoch die Fehlermeldung oben?
Dann ist etwas in der Klasse Map in Zeile 62 null.
 
G

Gast2

Gast
Du hast x Städte, und willst immer nur eine Stadt anzeigen. Dann brauchst du nicht x Frames, sondern nur einen.
Das ganze dann noch schön aufgebaut nach MVC und alles ist prima ;)
 
C

Camino

Gast
Deine Städte sind alle JFrames, die du öffnen und angezeigt haben willst. Ich würde erst mal nur 1 JFrame für die Anwendung machen und dann die Klasse Stadt so umschreiben, dass ich sie in diesem Frame angezeigt bekommen kann. Was auch immer da angezeigt werden soll. Hab ich aber nun schon mehrmals geschreiben. Und was die Klasse Map sein soll, weiss ich auch nicht.
 

KingEldarion

Bekanntes Mitglied
Also sozusagen, Stadt ist kein Frame sondern eine normale Class, die dann die Stadt-variablen besitzt.
Dann einen JFrame, der dann die jeweiligen Variablen der Städte ausgibt?

Also die Klasse Map ist ein JFrame mit mehreren JButtons, jeder dieser JButtons wird eine der Städte öffnen, bzw. einer geht zurück ins Hauptmenü...
 
C

Camino

Gast
Also die Klasse Map ist ein JFrame mit mehreren JButtons, jeder dieser JButtons wird eine der Städte öffnen, bzw. einer geht zurück ins Hauptmenü...
Das könntest du dann besser als Menü in deinem Hauptframe anlegen, oder als Auswahl (JComboBox) in deinem JFrame oberhalb des Panels, wo die Städte angezeigt werden. So kannst du dann in der ComboBox auswählen, welche Stadt angezeigt werden soll und dann wird die in dem Bereich in dem JFrame angezeigt.
 

KingEldarion

Bekanntes Mitglied
Mal schauen, ich wollte aber auf jeden Fall noch die Buttons zu den Städten auf eine bestimmte Position setzen, so dass sie auf einer Grafik die Frankreich zeigt, an der richtigen Stelle liegen...
 
C

Camino

Gast
Hm, so langsam erschliesst sich mir, was du überhaupt vorhast. Du hast eine Karte von Frankreich, und willst dann durch Klick auf die Städte die Infos zu der Stadt angezeigt bekommen?
 

KingEldarion

Bekanntes Mitglied
Fast eigentlich soll das ein Spiel werden.

Ein JButton soll dann eine Kampf.java ausführen.
Die Stadt gehört dann dem jeweils anderen.
Vorausgesetzt er gewinnt die Schlacht...

Und der Kampf dreht sich um Frankreich...
 
C

Camino

Gast
Dann wirst du nicht drum herumkommen, deine Anwendung nach MVC umzustrukturieren, also trennen nach Daten (Model) und grafischen Elementen (View), sowie einem Controller oder einer Spielengine. Wenn du dann eine Aktion ausführen möchtest, machst du das über den Controller, der dann evtl. die Daten (das Model) manipuliert und das Model automatisch die View aktualisiert.
 

KingEldarion

Bekanntes Mitglied
Ich habs jetzt so ausprobiert:

Stadtviewer.java:

Java:
import javax.swing.*;

import java.awt.event.*;


public class Stadtviewer extends JFrame implements ActionListener{

	int ID;
	
	int einheiten;
	int einwohner;
	boolean spieler;
	
	String Name;
	
	
	 void view(int i){
		ID = i;
	
		if(ID == 1){
			Name = "Brest";
			einwohner = Stadt.Brest.einwohner;
			einheiten = Stadt.Brest.einheiten;
			spieler = Stadt.Brest.spieler;
		}
		
		if(ID == 2){
			Name = "Paris";
			einwohner = Stadt.Paris.einwohner;
			einheiten = Stadt.Paris.einheiten;
			spieler = Stadt.Paris.spieler;
		}
		
		if(ID == 3){
			Name = "Caen";
			einwohner = Stadt.Caen.einwohner;
			einheiten = Stadt.Caen.einheiten;
			spieler = Stadt.Caen.spieler;
		}
		
		if(ID == 4){
			Name = "Rennes";
			einwohner = Stadt.Rennes.einwohner;
			einheiten = Stadt.Rennes.einheiten;
			spieler = Stadt.Rennes.spieler;
		}
		
		if(ID == 5){
			Name = "Nantes";
			einwohner = Stadt.Nantes.einwohner;
			einheiten = Stadt.Nantes.einheiten;
			spieler = Stadt.Nantes.spieler;
		}
		
		if(ID == 6){
			Name = "LeMans";
			einwohner = Stadt.LeMans.einwohner;
			einheiten = Stadt.LeMans.einheiten;
			spieler = Stadt.LeMans.spieler;
		}
		
		if(ID == 7){
			Name = "Bordeaux";
			einwohner = Stadt.Bordeaux.einwohner;
			einheiten = Stadt.Bordeaux.einheiten;
			spieler = Stadt.Bordeaux.spieler;
		}
		
		if(ID == 8){
			Name = "Toulouse";
			einwohner = Stadt.Toulouse.einwohner;
			einheiten = Stadt.Toulouse.einheiten;
			spieler = Stadt.Toulouse.spieler;
		}
		
		if(ID == 9){
			Name = "Montpellier";
			einwohner = Stadt.Montpellier.einwohner;
			einheiten = Stadt.Montpellier.einheiten;
			spieler = Stadt.Montpellier.spieler;
		}
		
		if(ID == 10){
			Name = "Marseille";
			einwohner = Stadt.Marseille.einwohner;
			einheiten = Stadt.Marseille.einheiten;
			spieler = Stadt.Marseille.spieler;
		}
		
		if(ID == 11){
			Name = "Lyon";
			einwohner = Stadt.Lyon.einwohner;
			einheiten = Stadt.Lyon.einheiten;
			spieler = Stadt.Lyon.spieler;
		}
		
		if(ID == 12){
			Name = "Dijon";
			einwohner = Stadt.Dijon.einwohner;
			einheiten = Stadt.Dijon.einheiten;
			spieler = Stadt.Dijon.spieler;
		}
		
		if(ID == 13){
			Name = "Limoges";
			einwohner = Stadt.Limoges.einwohner;
			einheiten = Stadt.Limoges.einheiten;
			spieler = Stadt.Limoges.spieler;
			
			
		}
		

	}
	 
	 public Stadtviewer(){
			setTitle("Crusade of Future");
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			setLayout(null);
			
			JLabel labName = new JLabel("Stadt:" + Name); 
			JLabel labEinwohner = new JLabel("Einwohner:" + einwohner);
			JLabel labEinheiten = new JLabel("Einheiten:" + einheiten);
			
			labName.setBounds(30, 30, 150, 25);
			labEinwohner.setBounds(30, 55, 150, 25);
			labEinheiten.setBounds(30, 80, 150, 25);
			
			
			
			add(labName);
			add(labEinwohner);
			add(labEinheiten);
			
		}
	
	
	
	
	public void actionPerformed(ActionEvent evt) {
		
		
	}
}


Und meine Stadt.java
Java:
public class Stadt
{
	int einwohner = 310000;
	int einheiten = 5;
	boolean spieler = false; //true=Spieler false=bot!
	
	
	static Stadt Brest = new Stadt();
	static Stadt Paris = new Stadt();
	static Stadt Caen = new Stadt();
	static Stadt Rennes = new Stadt();
	static Stadt Nantes = new Stadt();
	static Stadt LeMans = new Stadt();
	static Stadt Bordeaux = new Stadt();
	static Stadt Toulouse = new Stadt();
	static Stadt Montpellier = new Stadt();
	static Stadt Marseille = new Stadt();
	static Stadt Lyon = new Stadt();
	static Stadt Dijon = new Stadt();
	static Stadt Limoges = new Stadt();
	
	
	static void einsetzen(){
		
		Brest.spieler = true;
		Brest.einwohner = 5000;
		Brest.einheiten = 100;
	}
}

Das Problem dabei ist das alle Werte die ich ausgeben will also einheiten, einwohner und spieler alle als null angezeigt werden, starten tuh ich den Frame von der Map.java und die Methode einsetzen in der Stadt.java wird übrigens beim starten des Programmes ausgeführt...
 
C

Camino

Gast
Ich würde die Klasse Stadt viel allgemeiner anlegen, mit den notwendigen Feldern, wie z.B. Stadtname, Einwohner, Einheiten usw., alle als private deklariert und mit setter- und getter-Methoden versehen. Vielleicht auch noch einen leeren und einen Konstruktor mit Parametern. Und dann in einer Datenklasse oder im Stadtviewer die konkreten Städte als Objekte anlegen.
 

KingEldarion

Bekanntes Mitglied
Seh ich das richtig das getter und setter sozusagen nur Methoden sind, bzw. die getter nur methoden mit return-wert?

EDIT:

Habs geschafft habe jetzt einfach die Variablen mit einer return-Methode initialisiert.
 
Zuletzt bearbeitet:
C

Camino

Gast
Seh ich das richtig das getter und setter sozusagen nur Methoden sind, bzw. die getter nur methoden mit return-wert?

Ja, mit diesen beiden Methoden kannst du die Variablen (die normalerweise auf private gesetzt sind) entweder mit einem Wert füllen (set...) oder auslesen (get...).
Ich würde auch nicht mit diesen vielen static arbeiten, sondern eher irgendwo am Anfang Objekte dieser Städte anlegen (initialisieren) und in einer Collection (z.B. ArrayList) sammeln.
 

KingEldarion

Bekanntes Mitglied
So ich habe es jetzt ganz einfach mitnem "getter" gemacht, dass Problem ist, dass ich die Variablen natürlich auch ändern möchte, Problem dabei ist, wenn ich eine der Variablen durch:

Stadt.Brest.einwohner = 5000;

zum Beispiel ändern will, dann sind plötzlich alle Variablen der Klasse Stadt null?

Warum?
 
C

Camino

Gast
So ich habe es jetzt ganz einfach mitnem "getter" gemacht, dass Problem ist, dass ich die Variablen natürlich auch ändern möchte, Problem dabei ist, wenn ich eine der Variablen durch:

Stadt.Brest.einwohner = 5000;

zum Beispiel ändern will, dann sind plötzlich alle Variablen der Klasse Stadt null?

Warum?

Wie soll denn jemand wissen, warum? Diese eine Codezeile ist nur sehr wenig bis garnicht aussagekräftig. Hast du denn den Vorschlag umgesetzt und dir eine Klasse Stadt mit Variablen und getter- und setter-Methoden angelegt? Oder ist alles immer noch so wie vorher, mit den ganzen static Städten?
 
C

Camino

Gast
Du müsstest mindstens mal zeigen, wie deine Klasse Stadt nun ausssieht und wie du die Objekte (=Städte) erstellst bzw. wie du darauf zugreifst, um die Variablen zu ändern.
 

KingEldarion

Bekanntes Mitglied
Viel verändert habe ich nicht:

Stadt.java:
Java:
import javax.swing.JLabel;

public class Stadt
{	
	int einwohner = 100;
	int einheiten = 5;
	boolean spieler = false; //true=Spieler false=bot!
	String Name = "Brest";
	
	static int ID = OU.ID;
		
	static Stadt Brest = new Stadt();
	static Stadt Paris = new Stadt();
	static Stadt Caen = new Stadt();
	static Stadt Rennes = new Stadt();
	static Stadt Nantes = new Stadt();
	static Stadt LeMans = new Stadt();
	static Stadt Bordeaux = new Stadt();
	static Stadt Toulouse = new Stadt();
	static Stadt Montpellier = new Stadt();
	static Stadt Marseille = new Stadt();
	static Stadt Lyon = new Stadt();
	static Stadt Dijon = new Stadt();
	static Stadt Limoges = new Stadt();

	
	
	
	
	//Rückgabemethoden für den Stadtviewer
	
	static int BackEinwohner(){
		
		int Einwohnerreturn = 0;
		
		if(ID == 1){
			Einwohnerreturn = Brest.einwohner;
		}
		
		if(ID == 2){
			Einwohnerreturn = Paris.einwohner;
		}
		
		if(ID == 3){
			Einwohnerreturn = Caen.einwohner;
		}
		
		if(ID == 4){
			Einwohnerreturn = Rennes.einwohner;
		}
		
		if(ID == 5){
			Einwohnerreturn = Nantes.einwohner;
		}
		
		if(ID == 6){
			Einwohnerreturn = LeMans.einwohner;
		}
		
		if(ID == 7){
			Einwohnerreturn = Bordeaux.einwohner;
		}
		
		if(ID == 8){
			Einwohnerreturn = Toulouse.einwohner;
		}
		
		if(ID == 9){
			Einwohnerreturn = Montpellier.einwohner;
		}
		
		if(ID == 10){
			Einwohnerreturn = Marseille.einwohner;
		}
		
		if(ID == 11){
			Einwohnerreturn = Lyon.einwohner;
		}
		
		if(ID == 12){
			Einwohnerreturn = Dijon.einwohner;
		}
		
		if(ID == 13){
			Einwohnerreturn = Limoges.einwohner;
		}
		
		return Einwohnerreturn;
	}
	
	
	
	static int BackEinheiten(){
		
		int Einheitenreturn = 0;
	
	if(ID == 1){
		Einheitenreturn = Brest.einheiten;
	}

	if(ID == 2){
		Einheitenreturn = Paris.einheiten;
	}

	if(ID == 3){
		Einheitenreturn = Caen.einheiten;
	}

	if(ID == 4){
		Einheitenreturn = Rennes.einheiten;
	}

	if(ID == 5){
		Einheitenreturn = Nantes.einheiten;
	}

	if(ID == 6){
		Einheitenreturn = LeMans.einheiten;
	}

	if(ID == 7){
		Einheitenreturn = Bordeaux.einheiten;
	}

	if(ID == 8){
		Einheitenreturn = Toulouse.einheiten;
	}

	if(ID == 9){
		Einheitenreturn = Montpellier.einheiten;
	}

	if(ID == 10){
		Einheitenreturn = Marseille.einheiten;
	}

	if(ID == 11){
		Einheitenreturn = Lyon.einheiten;
	}

	if(ID == 12){
		Einheitenreturn = Dijon.einheiten;
	}

	if(ID == 13){
		Einheitenreturn = Limoges.einheiten;
	}
	
		return Einheitenreturn;
		}

	
	
	static String BackName(){
		String Namereturn = "KA";
		
		
		
		if(ID == 1){
			Namereturn = Brest.Name;
		}

		if(ID == 2){
			Namereturn = Paris.Name;
		}

		if(ID == 3){
			Namereturn = Caen.Name;
		}

		if(ID == 4){
			Namereturn = Rennes.Name;
		}

		if(ID == 5){
			Namereturn = Nantes.Name;
		}

		if(ID == 6){
			Namereturn = LeMans.Name;
		}

		if(ID == 7){
			Namereturn = Bordeaux.Name;
		}

		if(ID == 8){
			Namereturn = Toulouse.Name;
		}

		if(ID == 9){
			Namereturn = Montpellier.Name;
		}

		if(ID == 10){
			Namereturn = Marseille.Name;
		}

		if(ID == 11){
			Namereturn = Lyon.Name;
		}

		if(ID == 12){
			Namereturn = Dijon.Name;
		}

		if(ID == 13){
			Namereturn = Limoges.Name;
		}
		
		return Namereturn;
	}
	
	
	
	
	
}

Stadtviewer.java:

Java:
import javax.swing.*;

import java.awt.event.*;


public class Stadtviewer extends JFrame implements ActionListener{	
	JLabel labName;
	JLabel labEinwohner;
	JLabel labEinheiten;
	
	
	

	
	 
	 public Stadtviewer(){
			setTitle("Crusade of Future");
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			setLayout(null);
			
			 }
	
	void init(){
		int einheiten = Stadt.BackEinheiten();
		int einwohner = Stadt.BackEinwohner();
		boolean spieler = Stadt.Brest.spieler;
		String Name = Stadt.BackName();
		
		labName = new JLabel("Stadt: " + Name);
		labEinwohner = new JLabel("Einwohner: " + einwohner);
		labEinheiten = new JLabel("Einheiten: " + einheiten);
		
		labName.setBounds(30, 30, 150, 25);
		labEinwohner.setBounds(30, 55, 150, 25);
		labEinheiten.setBounds(30, 80, 150, 25);			
	
		
		add(labName);
		add(labEinwohner);
		add(labEinheiten);
	}
	
	
	
	
	public void actionPerformed(ActionEvent evt) {
		
		
	}
	
	
	
}

Eine Variable der Städte will ich so verändern:

Stadt.Brest.einwohner = 5000;

Das Problem ist momentan halt, dass wenn ich die Variablen durch den obigen Code initialisieren möchte, sind alle Stadtvariablen also auch wenn ich nur die Einwohner-variable von Brest ändere, sind auch alle anderen Städte und Variablen null, also z.B. der Name von Paris ebenfalls null...

Warum? Wenn ich die Codezeile nicht habe, dann wird alles richtig angezeigt, Name, Einwohner, Einheiten...
 
C

Camino

Gast
Hmmm, das sieht alles ziemlich seltsam aus, die ganzen if-Abfragen lassen sich z.B. mit switch eleganter lösen, und das mit den vielen static sieht nicht so toll aus.

Ich dachte bei der Klasse Stadt eigentlich eher an so etwas:
Java:
public class Stadt {
	
	private String name;
	private int einwohner;
	private int einheiten;
	
	
	// leerer Konstruktor
	public Stadt() {
	
	}
	
	// Konstruktor mit Parameter
	public Stadt(String name, int einwohner, int einheiten) {
		
		this.name = name;
		this.einwohner = einwohner;
		this.einheiten = einheiten;
		
	}

	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getEinwohner() {
		return einwohner;
	}

	public void setEinwohner(int einwohner) {
		this.einwohner = einwohner;
	}

	public int getEinheiten() {
		return einheiten;
	}

	public void setEinheiten(int einheiten) {
		this.einheiten = einheiten;
	}

}

Jetzt nur mal vereinfacht mit den Feldern für Name, Einwohneranzahl und Einheiten der Stadt. Es gibt 2 Konstruktoren, einmal leer (die Variablen werden nicht gefüllt) und einen mit Parameter, also man übergibt beim Erstellen einer neuen Stadt die Werte dem Konstruktor, z.B.:

Java:
Stadt brest = new Stadt("Brest", 200000, 40000);

So kannst du Objekte der Klasse Stadt erstellen. Die Werte ändern kannst du mit den setter-Methoden, z.B.:

Java:
brest.setEinheiten(50000);

Und auslesen kannst du die Werte mit den getter-Methoden:

Java:
int einheitenInBrest = brest.getEinheiten();

So kannst du dir mehrere Objekte von Städten anlegen und deren Werte verändern oder auslesen. Du könntest z.B. in deiner Klasse Stadtviewer in einer init-Methode erstmal alle gewünschten Städte anlegen.

Ansonsten schreibt man Variablen-Namen klein, also anstatt
Code:
String Name = "Brest";
oder
Code:
int Einwohnerreturn = 0;
heisst es
Code:
String name = "Brest";
oder [c]int einwohnerreturn = 0;[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Frame über Button öffnen Java Basics - Anfänger-Themen 8
R Button soll neuen Frame öffnen Java Basics - Anfänger-Themen 21
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
T Frame öffnen Java Basics - Anfänger-Themen 6
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
W einfaches Frame öffnen Java Basics - Anfänger-Themen 2
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
L Kalender Java Frame Java Basics - Anfänger-Themen 7
A Frame Java Basics - Anfänger-Themen 3
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
A Frame java Java Basics - Anfänger-Themen 3
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
F Frame in Frame Java Basics - Anfänger-Themen 3
U GUI - resize frame Java Basics - Anfänger-Themen 13
J Open reading Frame Java Basics - Anfänger-Themen 4
J Erstelltes Frame wird nicht angezeigt Java Basics - Anfänger-Themen 2
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
A Frame Background Java Basics - Anfänger-Themen 21
S Klassen Klassenname = Frame? Java Basics - Anfänger-Themen 11
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
I Java - Text in neuem Frame wird nicht angezeigt Java Basics - Anfänger-Themen 4
M Frame mit mehreren areas Java Basics - Anfänger-Themen 14
L Variablen Frame Variablen-Schleife Java Basics - Anfänger-Themen 3
V Frame bleibt grau Java Basics - Anfänger-Themen 5
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
F frame wird nicht angezeigt? Java Basics - Anfänger-Themen 10
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
I JTable in bestehenden Frame integrieren Java Basics - Anfänger-Themen 6
Y Hilfe: JOGL / OPENGL in Frame Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
A Frame reagiert nicht Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
R Frame Inhalt ausrichten Java Basics - Anfänger-Themen 5
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
kulturfenster Panel in Frame integrieren Java Basics - Anfänger-Themen 5
kulturfenster Per Button Frame schliessen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
M Variable in Frame anzeigen Java Basics - Anfänger-Themen 11
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
N Frame in Frame erstellen Java Basics - Anfänger-Themen 2
B Java-Frame Taschenrechner - String -> Int und umgekehrt Java Basics - Anfänger-Themen 8
G Bild wird im falschen Frame angezeigt Java Basics - Anfänger-Themen 5
G Frame soll Focus behalten Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5
G Frame Applet oder doch was anderes Java Basics - Anfänger-Themen 2
M Frame zeigt Desktop als Hintergrund Java Basics - Anfänger-Themen 2
J Eine swf-datei in einen Frame einfügen? Java Basics - Anfänger-Themen 6
K Schrift und Farben im Frame (Anfänger) Java Basics - Anfänger-Themen 2
D Frame in Center Screen Java Basics - Anfänger-Themen 7
A Frame aus Applet erzeugen und mit Inhalt füllen Java Basics - Anfänger-Themen 5
G Problemme mit: Aufruf einer Klasse aus einem Frame Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben