ActionListener JMenuItem

Status
Nicht offen für weitere Antworten.

b0unc3

Bekanntes Mitglied
hay hay,

- ich möchte in einer for schleife JMenues und JMenuItems erstellen
- die JMenues und JMenuItems liegen in einem Mehrdimensionalen Array

nun zum problem:

ich möchte in der schleife ein ActionListener hinzufügen, aber leider bekomm ich dabei immer folgenden fehler (von eclipse):

Cannot referto a non-final variable i2 inside an inner class defined in a different method

hier die Arrays:

Code:
	final String[] sActionspiele	= {"Goldfish Bowl", "Magic Spinball", "Carnival Shootout",
									"Itsy Bitsy Spider", "BB Bathtub", "Duck Pond Dash",
									"Polar Bear Bounce", "Candy Rail", "Animal Athletes"};
	final String[] sPuzzlespiele	= {"Deal or No Deal", "Katana Kaunto", "Bomp Bomp", "Match Blocks",
									"Jungle Bubble", "Klick, Klack & Roll", "Silver Screen",
									"Klicker Klacker 2", "Startris", "Jungle Rumble", "Fashion Factory",
									"Midas Miner", "Chain Reaction", "Flower Power"};
	final String[] sDenkspiele		= {"Mahjong Masquerade", "Hex Combo", "Mahjong Treasure", "Mahjong Fortuna",
									"Sudoku Sweep", "Midas Mahjong", "Chesster"};
	final String[] sKartenspiele	= {"Midas Solitaire", "Ace Solitaire", "Honey Combo", "Pyramid", "Skat",
									"GoGo 21", "Pyramid Battle", "Royale 55"};
	final String[] sWortspiele		= {"Word Link", "Word Battle", "Keyword", "Quiz Queen"};
	final String[] sSportspiele		= {"8-Ball Pool", "9-Ball Pool", "Midas Links", "KicKing", "Pool King",
									"Couronne King", "Webracer GP"};
	
	JMenuItem iActionspiele[]	= new JMenuItem[sActionspiele.length];
	JMenuItem iPuzzlespiele[]	= new JMenuItem[sPuzzlespiele.length];
	JMenuItem iDenkspiele[]		= new JMenuItem[sDenkspiele.length];
	JMenuItem iKartenspiele[]	= new JMenuItem[sKartenspiele.length];
	JMenuItem iWortspiele[]		= new JMenuItem[sWortspiele.length];
	JMenuItem iSportspiele[]	= new JMenuItem[sSportspiele.length];
	
	JMenuItem iMenues[][]		= new JMenuItem[6][sActionspiele.length+sPuzzlespiele.length+
	                     		                  sDenkspiele.length+sKartenspiele.length+
	                     		                 sWortspiele.length+sSportspiele.length];

und hier die schleife:

Code:
	      boolean	bgt	= true,
	      			bc  = true,
	      			bt  = true;
	      for (int i=iMenues.length; i>=0;i--) {
	    	  //Geldturniere
	    	  for (int i2=sActionspiele.length-1;i2>=0 && bgt == true; i2--) {
	    		  System.out.println("i2: " + i2);
	    		  iMenues[0][i] = new JMenuItem(sActionspiele[i2]);
	    		  menueActionspiele.add(iMenues[0][i]);
	    		  menueGeldturniere.add(iMenues[0][i]);
	    		  iMenues[0][i].addActionListener(new ActionListener() {
	    			  public void actionPerformed(ActionEvent evt) {
	    				  NewGeldspiel iFrame = new NewGeldspiel(sActionspiele[i2], desktop);
	    				  iFrame.setVisible(true);
	    			  }
	    		  });
	    		  if (i2 == 0) {
	    			  bgt = false;
	    		  }
	    	  }
	      }

also was der fehler bedeutet, weiss ich aber wie könnt ich es sonst machen?
 

Leroy42

Top Contributor
Das geht so nicht! Das Problem ist,
daß du i2 als Laufvariable benutzt und einen ActionListener
für alle i2 verwenden willst.

Da der ActionListener aber in der Realität nur einmal
existiert, kann das nicht funktionieren.

Auch wenn du dein i2 in ein Objekt packst wird es zwar kompilieren
aber zur Abarbeitungszeit des ActionListeners keine verschieden i2's
mehr existieren.

Hoffe, mich verständlich ausgedrückt zu haben. ???:L
 

b0unc3

Bekanntes Mitglied
ja ok hab das verstanden also habe ich keine andere möglichkeit, als den ActionListener in meine klasse zu implementieren und dann mit einer actionPerformed methode zu gucken welcher button denn jetzt angeklickt wurde, richtig?

falls ja wie frage ich es dann ab? muss ich für die einzelnen links im menü einen actioncommand setzen oder hab ich da auch andere möglichkeiten? wie z.b bei JTable mit *glaub*getSelectedIndex()

also ich hab es jetzt mal so versucht, aber ich bekomme zur Laufzeit immer eine NullPointerException:

Code:
  boolean	bgt	= true,
	      			bc  = true,
	      			bt  = true;
	      for (int i=iMenues.length-1; i>=0;i--) {
	    	  //Geldturniere
	    	  for (int i1=sActionspiele.length-1;i1>=0 && bgt == true; i1--) {
	    		  System.out.println("i1: " + i1);
	    		  iMenues[0][i] = new JMenuItem(sActionspiele[i1]);
	    		  menueActionspiele.add(iMenues[0][i]);
	    		  menueGeldturniere.add(iMenues[0][i]);
	    		  if (i1 == 0) {
	    			  bgt = false;
	    			  iMenues[0][i1].setActionCommand(sActionspiele[i1]); //hier kommt die NullPointerException
	    		  }
	    	  }
	      }

ok hab den fehler gefunden, ich musste folgendes ändern:

Code:
	    			  iMenues[0][i1].setActionCommand(sActionspiele[i1]); //hier kommt die NullPointerException

in

Code:
  iMenues[0][i].setActionCommand(sActionspiele[i1]); //hier kommt die NullPointerException
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
M Swing JMenuItem und der ActionListener AWT, Swing, JavaFX & SWT 2
O Verstehe ActionListener in Verbindung mit JMenuItem AWT, Swing, JavaFX & SWT 4
G identische JMenuItem im actionListener unterscheiden AWT, Swing, JavaFX & SWT 4
C JMenuItem ActionListener AWT, Swing, JavaFX & SWT 26
B ActionListener/JMenuItem/getSource() . AWT, Swing, JavaFX & SWT 5
J JMenuItem und ActionListener 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
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
C ActionListener AWT, Swing, JavaFX & SWT 6
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben