JMenu und ActionListener per Schleife erzeugen

Status
Nicht offen für weitere Antworten.

Sgoda

Mitglied
Hallo,
ich habe ein Problem mit folgendem Code:

Code:
for(int i = 0; i < profil.read().size(); i++){
			JMenuItem check = new JMenuItem(profil.read().elementAt(i).print());
			Action checkAction = new AbstractAction(profil.read().elementAt(i).print()){
				public void actionPerformed(ActionEvent e){
					Profil current_profil = profil.read().elementAt(i);
				}
			};
			choose_profile.add(check);
		}

Die for-Schleife soll aus einem Vector von Objekten die von mir gewähle String-Repräsentation dieser Objekte als Menüeinträge hinzufügen und diesen auch gleich eine Action verpassen, und zwar soll das komplette Objekt einem neuen Objekt übergeben werden.
Die Menüeinträge werden auch wie gewünscht hinzugefügt, es bleibt dann aber bei "Action" hängen.
Der Sinn hinter dem Ganzen ist, dass ich die Daten mehrerer Profile aus einer Datei lese, diese einem Vector von Profilobjekten zugewiesen werden und aus dem Menü eines der bestehenden Profile ausgewählt werden können soll.

Das eigentliche Problem ist, dass actionPerformed von mir final-variablen verlangt.
Da aber profil ein Vector ist, der anhand der Variable i durchlaufen wird, verändern sich logischerweise sowohl profil.read().elementAt(i) als auch i selber.

Gibt es eine Möglichkeit das zu umgehen bzw. eine sinnvolle Alternative?
Leider ist dies das erste Mal, dass ich versuche eine GUI zu basteln, bisher war immer alles Konsole...
 

Sgoda

Mitglied
Hm ok, auch hier heißt die Lösung Klassenvariablen. Find ich zwar scheiße, weil ich jede 2. Variable als Klassenvariable daklarieren muss und hoffe, dass ich nix zuweise wo ich es nicht will, aber damit muss ich wohl leben.
 

musiKk

Top Contributor
Wie Klassenvariable? Wenn das Problem ist, dass du innerhalb der actionPerformed()-Methode nicht aufs i zugreifen kannst, dann hätte es ein
Code:
final int finalI = i;
getan, aber vielleicht meinst du das ja. Ich finde sowas zugegeben auch nicht sooo hübsch, aber irgendwie muss mans ja machen.
 

Sgoda

Mitglied
Achso nee, ich meinte tatsächlich static int i ^^
So gehts zwar auch, aber da gefällt mir deine Variante besser, bin nur nicht drauf gekommen ;)

Anderes Problem mit dem gleichen Code:

mit profil.read() wird ja ein Vector von Profil-Objekten zurückgegeben.
Wenn ich mir in der Methode direkt die Instanzvariablen der Profil-Objekte des Vectors ausgeben lasse, ist auch alles richtig.
Jedoch gibt die Funktion immer nur einen Vector mit der richtigen Anzahl an Elementen zurück, dessen Elemente allerdings ausschließlich das zuletzt erzeugte Profil-Objekt enthalten.
Die read-Methode sieht wiefolgt aus:

Code:
public Vector<Profil> read(){
		Vector<Profil> profile = new Vector<Profil>();
		String line;
		String[] tokens;
		Profil profil = new Profil();
		File file = new File("profile.dat");
		try{
			FileReader r = new FileReader(file);
			BufferedReader br = new BufferedReader(r);
			while((line = br.readLine()) != null){
				tokens = line.split(":");
				profil.user = tokens[0];
				profil.pass = tokens[1];
				profil.welt = tokens[2];
				profil.board = tokens[3];
				profile.add(profil);
			}
			br.close();
			r.close();
		}
		catch(IOException e){
			System.out.println(e.getMessage());
		}
		return profile;
	}

Wenn ich mir nach der While-Schleife eines der Elemente ausgeben lasse sind diese korrekt, nach der Rückgabe allerdings nicht mehr...
Woran liegt das???

Oh man ey... kaum abgeschickt und nochmal drübergelesen fällt mir der Fehler auf...
Ich muss natürlich das neue Profil-Objekt innerhalb der While-Schleife erzeugen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Y Backgroundcolor JMenu AWT, Swing, JavaFX & SWT 2
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
R JMenu aus Ordnern AWT, Swing, JavaFX & SWT 4
P JMenu aus Dateistruktur AWT, Swing, JavaFX & SWT 2
I JMenu AWT, Swing, JavaFX & SWT 5
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
frankred Swing JMenu verschwindet nicht beim klicken ausserhalb des JMenu! AWT, Swing, JavaFX & SWT 4
F JMenu auf JPanel AWT, Swing, JavaFX & SWT 5
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
E JMenu übersetzen AWT, Swing, JavaFX & SWT 9
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? AWT, Swing, JavaFX & SWT 3
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
T Swing JMenu als Button behandeln AWT, Swing, JavaFX & SWT 4
T Swing jMenu AWT, Swing, JavaFX & SWT 6
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
T Swing JMenu falsch positioniert AWT, Swing, JavaFX & SWT 2
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
Developer_X Swing JMenu Bug gefunden AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
hdi Welche Klasse + Listener für JMenu AWT, Swing, JavaFX & SWT 2
A JMenu Bug? AWT, Swing, JavaFX & SWT 12
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
C JMenu bzw. JButton mit URL versehen AWT, Swing, JavaFX & SWT 2
X JMenu AWT, Swing, JavaFX & SWT 2
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
Ernesto95 Programmabsturz beim Einbinden eines JMenu AWT, Swing, JavaFX & SWT 18
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
G Scrollbares JMenu AWT, Swing, JavaFX & SWT 4
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
H JMenu wird leider unterhalb! der CanvasFläche dargestellt AWT, Swing, JavaFX & SWT 5
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
padde479 JMenu mnemonic AWT, Swing, JavaFX & SWT 3
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B 1 JMenu in Mehrere JMenus AWT, Swing, JavaFX & SWT 2
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
I JMenu(Item) und FocusListener AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
R JMenu + Farbe von Hintergrund AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
D Schriftfarbe ändern (JFrame, JMenu etc) AWT, Swing, JavaFX & SWT 3
K JMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
I JMenu wird nicht dargestellt AWT, Swing, JavaFX & SWT 12
H JMenu soll "offen bleiben" AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
redztripe Haken in JMenu setzen? AWT, Swing, JavaFX & SWT 8
G Icon zu JMenu AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G JMenu - neuer Frame AWT, Swing, JavaFX & SWT 2
X Verschwinden des JMenu unterbinden AWT, Swing, JavaFX & SWT 3
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
E JTextArea überlagert JMenu AWT, Swing, JavaFX & SWT 2
D JMenu spinnt AWT, Swing, JavaFX & SWT 7
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
G JMenu Info-Fenster ganz Rechts AWT, Swing, JavaFX & SWT 5
H JMenu zuklappen AWT, Swing, JavaFX & SWT 7
K JMenu Aktionen AWT, Swing, JavaFX & SWT 3
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben