ActionPerformed Fehler...

sicLotus

Bekanntes Mitglied
Hallo, ich erzeuge in einer Schleife mehrere Buttons.
Da das ganze in einer Schleife geschieht, werden ja "zwangsweise" immer wieder die selben Namen für den Button verwendet und mit dem nächsten Durchlauf überschrieben.
Ungefähr so:

Java:
for (int i=0; i<=5;i++) {
   JButton btnGericht = new JButton(""+i);
}

Mein Problem ist jetzt, jeder dieser Buttons braucht noch ein ActionEvent!!!
Ich hab probiert das ganze mit, ich glaube das nennt sich innere Klassen, zu lösen:

Java:
for (int i=0; i<=5;i++) {
   JButton btnGericht = new JButton(""+i);
   btnGericht.addActionListener(new ActionListener() {
		      public void actionPerformed( ActionEvent e ) {
                      //event!!!
                      });
}
Wenn ich das jedoch Aufrufe kommt folgender Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
und dann noch eine ganze Liste mit TraceStack (unknown source)

Wisst ihr wie man das Problem lösen kann? Oder gibts dafür vllt gar keine Lösung?
 

icarus2

Top Contributor
Also wenn du mehrere Buttons gleichzeitig haben möchtest, so würde ich entweder von der Klasse JButton einen Array erstellen oder noch besser eine List<JButton>.

Ich verstehe nur leider nicht so ganz was du da überhaupt machen möchtest... vielleicht sowas??
[Java]
package severalbuttons;

import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Buttons extends JFrame {

Container c;
List<JButton> buttons; // list in which all JButtons are stored

public Buttons(){

c = getContentPane();
c.setLayout( new FlowLayout() );

buttons = new ArrayList<JButton>();

for( int i = 0; i <= 5; i++ ){
buttons.add(new JButton("" + i)); // new JButton added to list
c.add( buttons.get( i ) ); // JButton is added
// ActionListener is added
buttons.get( i ).addActionListener(new ActionListener(){
public void actionPerformed( ActionEvent e ){
System.out.println( "Hallo" );
}
});
}

setSize( 600, 300 );
setVisible( true );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
new Buttons();
}
});

}

}
[/Java]

Bei mir gibts damit keine NPE.
 

U2nt

Bekanntes Mitglied
Hmm alle Buttons in ein array zu packen wäre nicht gerade die idealste Lösung (weiß nich nochnich solange). Man schreibt lieber eine Klasse die vom JButton erbt, und dann die jeweilie Optionen darauf direkt anwendet...
Außerdem verstehe ich nicht was du mit dem
Code:
JButton btnGericht = new JButton("" + i)
machen willst... Du überschreibst jedes mal den Button btnGericht...
 

sicLotus

Bekanntes Mitglied
Okay, ich denke ich werd nochmal genauer beschreiben was ich da plane :)

Ich bastel zur Zeit mein aller erstes GUI. Ich habe eine RadioButtonGroup mit 3 Auswahlmöglichkeiten. Je nachdem welche ich auswähle, blätter ich durch meine JPanels (CardLayout). Nun habe ich vorher schon eine Collection(Liste) mit Elementen gegeben und für jedes Element davon möchte ich einen Button erzeugen. (Wiederum soll der Button halt nur einmal erzeugt werden, darum auch das CardLayout zum durchblättern)

Somit sieht meine eigentlicher Code eher in der Form aus:
Java:
Gericht g;
for ( Iterator<Gericht> item = karte.getGerichte().iterator(); item.hasNext(); ){
			g = item.next();
			   JButton btnGericht = new JButton(g.getGerichtName());
			   btnGericht.addActionListener(new ActionListener() {
		      public void actionPerformed( ActionEvent e ) {
					tmpBestellung.addBestellung(g);
       }
		      });

Zur kurzen Erklärung, das is ne Liste mit Gerichten, wenn man auf den Button klickt soll man genau dieses Gericht quasi bestellen. Zur Zeit ist das Event nur eine Syso-Ausgabe auf der Console, von daher kann der Fehler "eigentlich" nicht am Event liegen.

Hier mal die genaue Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Gui_CardLayout$1.actionPerformed(Gui_CardLayout.java:102)
	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.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)
 

sicLotus

Bekanntes Mitglied
Omg ja du hast recht, jetzt kann ich die Buttons anklicken und es kommt kein Fehler mehr.. nur bei jedem ButtonClick kommt jetzt das letzte hinzugeschriebene Ereignis. Es wurde also immer wieder überschrieben.. geht das jetzt nur mit ner extra Liste das der sich das merkt oder weiß jmd noch ne andere Möglichkeit?


edit:

habs probiert mit der list auf die buttons und
Java:
buttons.get( i ).addActionListener(new ActionListener(){
                public void actionPerformed( ActionEvent e ){
                    System.out.println( "Hallo" );
                }
            });
hat aber leider auch nicht geklappt.. es wurde trotzdem nur das zuletzt hinzugefügte event ausgegeben :(
 
Zuletzt bearbeitet:
G

Gast2

Gast
Hmm alle Buttons in ein array zu packen wäre nicht gerade die idealste Lösung (weiß nich nochnich solange). Man schreibt lieber eine Klasse die vom JButton erbt, und dann die jeweilie Optionen darauf direkt anwendet...
Außerdem verstehe ich nicht was du mit dem
Code:
JButton btnGericht = new JButton("" + i)
machen willst... Du überschreibst jedes mal den Button btnGericht...

he was?
 

sicLotus

Bekanntes Mitglied
Das war nur nen Test.. mehr oder weniger ist der Konstruktor vom JButton doch nur der Text der angezeigt wird auf dem Button oder nicht?

edit:

Habs.. hier die Lösung:
Java:
for (Gericht item : karte.getGerichtec())
		{
			final Gericht g = item;
			   JButton btnGericht = new JButton(g.getGerichtName());
			   btnGericht.setName(""+g.getGerichtNummer());
			   btnGericht.addActionListener(this);
			   btnGericht.addActionListener(new ActionListener() {
		      public void actionPerformed( ActionEvent e ) {
				bestellen(g);

		        }
		      });
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G lastFocusedComponent in ActionPerformed AWT, Swing, JavaFX & SWT 4
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
K Event Handling Mit ActionPerformed und java.io arbeiten AWT, Swing, JavaFX & SWT 3
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
L ActionPerformed Variable übergeben AWT, Swing, JavaFX & SWT 3
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
C actionPerformed mit mehren Aktionen AWT, Swing, JavaFX & SWT 3
C Actionperformed funktioniert nicht AWT, Swing, JavaFX & SWT 13
H actionPerformed aufteilen AWT, Swing, JavaFX & SWT 12
G if-bedinung in actionperformed AWT, Swing, JavaFX & SWT 4
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
S AWT Java actionPerformed "Ok" Button AWT, Swing, JavaFX & SWT 4
V Labeltext ändert sich nicht in actionPerformed AWT, Swing, JavaFX & SWT 5
M actionPerformed() wird zu oft aufgerufen AWT, Swing, JavaFX & SWT 10
M Arbeiten mit actionPerformed(ActionEvent) oder Alternative AWT, Swing, JavaFX & SWT 7
M Swing Anfängerfrage: ActionPerformed AWT, Swing, JavaFX & SWT 3
B Swing NullPointerException bei actionPerformed() AWT, Swing, JavaFX & SWT 2
B actionPerformed Problem AWT, Swing, JavaFX & SWT 3
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
J Aus ActionPerformed ein Plugin starten AWT, Swing, JavaFX & SWT 4
R paintComponent direkt bei actionPerformed aufrufen AWT, Swing, JavaFX & SWT 2
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
J Action before actionPerformed! AWT, Swing, JavaFX & SWT 4
E ActionListener/actionPerformed() feuert nicht AWT, Swing, JavaFX & SWT 2
E AWT Implementierung einer Anweisung in Methode ActionPerformed AWT, Swing, JavaFX & SWT 2
B Komisches Problem mit actionPerformed() AWT, Swing, JavaFX & SWT 2
K Swing: 2 Buttons und actionPerformed AWT, Swing, JavaFX & SWT 4
B actionPerformed reagiert nicht auf das Canvas-objekt AWT, Swing, JavaFX & SWT 11
B Objekt in "actionPerformed" erzeugen und nutzen AWT, Swing, JavaFX & SWT 3
F actionPerformed und static? AWT, Swing, JavaFX & SWT 20
B Exceptions in actionPerformed() weiterleiten AWT, Swing, JavaFX & SWT 9
S Variablenübergabe bei actionPerformed funktioniet nicht? AWT, Swing, JavaFX & SWT 12
X actionPerformed in einer Klasse Buttons AWT, Swing, JavaFX & SWT 2
T public void actionPerformed(...) ist statisch?? AWT, Swing, JavaFX & SWT 6
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
L Unbekannter Fehler AWT, Swing, JavaFX & SWT 13
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17

Ähnliche Java Themen

Neue Themen


Oben