Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java - Variablen übergeben.



Engel der Furcht
22.10.2012, 14:57
Hallo, ich bin gerade dabei ein kleines Programm mit Java zu schreiben und stoße auf ein kleines Problem:

Ich habe meine Hauptapplikation,
die wird mit der Konstruktorklasse geöffnet etc.
Gleich beim Start kommt aber ein weiteres Fenster, wo man ein paar Parameter eingeben kann.
Dieses weitere Fenster ist also in der Hauptklasse erzeugt worden.

Wie hole ich nun die in Fenster 2 eingegeben Parameter in Klasse 1?

Whiz-zarD
22.10.2012, 15:05
Was meinst du konkret? Ich versteh nicht, was du möchtest.

Du hast eine Hauptklasse, die wohl die main()-Methode besitzt, oder?
Was du aber mit Fenster meinst, ist mir ein Rätsel. Vorallem, wieso zwei Fenster? Was macht denn die main()-Methode?

Engel der Furcht
22.10.2012, 16:42
Sorry für Doppelpost:

Bin dabei nen kleines Menü zu basteln und so.

Ich habe eine Zahl, die angibt wieviele Menüeinträge ich hab.
Und diese Menüeinträge brauchen X und Y Koordinaten.


Ich hab also einmal

byte anzahl[] = new byte[amount];
Das ist der Array der angibt wieviele Menüeinträge ich habe (amount kommt vorher aus dem oben genannten 2. Fenster)
Wie füge ich jetzt jedem einzelnen Menüpunkt X und Y Koordinaten mittels Array hinzu...

Whiz-zarD
22.10.2012, 17:31
Wie füge ich jetzt jedem einzelnen Menüpunkt X und Y Koordinaten mittels Array hinzu...

Gar nicht.
Das ein Byte-Array. Also ein Array mit Bytes. Da kannst du keine zwei Werte speichern.
Es sei denn, du willst mit Bit-Operatoren arbeiten, was aber wenig Sinn macht.

Du müsstest also eine Klasse erstellen, die zwei Werte speichert und dann das Array mit Instanzen dieser Klasse füllen.

makenshi
22.10.2012, 19:47
Java ist ein Objekt-orientierte Sprache. Du solltest dort nach Möglichkeit für sowas nicht allein mit den primitiven Datentypen arbeiten.
Das wird später auch schwer zu erweitern. Was ist z.B. wenn du auch die Namen deiner Menüpunkte abspeichern willst? Bilder? Sounds?

Nimm lieber so etwas hier:



class MenuEntry{
private int x;
private int y;

public MenuEntry(int x, int y){
this.x = x;
this.y = y;
}

public void setX(int x){
this.x = x;
}

public void setY(int y){
this.y = y;
}

public int getY(){
return y;
}

public int getX(){
return x;
}
}


Das wäre das Basis-Skelett für eine simple Klasse mit zwei Feldern. Diese kannst du beliebig um weitere Felder wie Namen und anderes erweitern.
Ein Array kannst du dann einfach mit instanziierten Objekten füllen.



MenuEntry[] menuEntrys = new MenuEntry[10];
MenuEntry entry = new MenuEntry(10,200);
menuEntrys[0] = entry;


Natürlich kannst du dafür lieber eine Schleife nutzen. Das hier ist nur zur Veranschaulichung.

Whiz-zarD
22.10.2012, 19:50
Statt eines Arrays würd ich auch eine Arraylist nehmen. Hat den Vorteil, dass man sie dynamisch erweitern kann.

makenshi
22.10.2012, 20:07
Statt eines Arrays würd ich auch eine Arraylist nehmen. Hat den Vorteil, dass man sie dynamisch erweitern kann.

Ist schon richtig. In das Beispiel aber noch Collections evtl. mit Generics rein zu nehmen wäre irgendwie ein ziemlicher Overkill geworden.

Ardam
23.10.2012, 07:50
Hallo,
ich will auch mal versuchen zu helfen :)


Ich habe meine Hauptapplikation,
die wird mit der Konstruktorklasse geöffnet etc.
Gleich beim Start kommt aber ein weiteres Fenster, wo man ein paar Parameter eingeben kann.
Dieses weitere Fenster ist also in der Hauptklasse erzeugt worden.

Wie hole ich nun die in Fenster 2 eingegeben Parameter in Klasse 1?
Ich bin mir sicher, ob ich den Aufbau deines Projekts ganz verstanden hab, aber du willst doch einen Parameter deiner Konstruktorklasse mitgeben, oder? Das machst du wie bei allen Methoden etc.

public Konstruktorname (parameter) {}


Wie füge ich jetzt jedem einzelnen Menüpunkt X und Y Koordinaten mittels Array hinzu...
Siehe makenshis Antwort. Vielleicht hilft dir auch das hier weiter: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
Layouts können imho sehr sinnvoll sein, wenn man einfache Menüs bauen will.

Engel der Furcht
23.10.2012, 09:34
Ich danke für eure Hilfe :)

Bin halt noch ein Anfänger was Java betrifft.
Ich werd im Laufe des Tages mal versuchen was ich machen kann, vllt klappts hinterher ja. ich verhau sowas meistens D: