ActionEvent wird nicht verarbeitet

PascalC

Mitglied
Hi,

ich habe eine GUI erstellt, welche durch Klicks auf vier Buttons die Farbe ändert. Dies funktioniert soweit auch. Ich habe jetzt noch einen fünften Button hinzugefügt, der durch die Farben "scrollen" soll, sprich, bei jedem Klick ändert sich die Hintergrundfarbe.

Leider setzt er den Hintergrund immer nur auf rot, das Problem ist wohl die if-Abfrage, aber ich habe keine Ahnung warum es nicht funktioniert:

Java:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class Aufgaben extends JFrame implements ActionListener
{
	JButton rot = new JButton("rot");
	JButton gruen = new JButton("gruen");
	JButton blau = new JButton("blau");
	JButton grau = new JButton("grau");
	JButton toll = new JButton("Kann alles");
	
	public Aufgaben(String title)
	{
		super(title);
		setLayout(new FlowLayout());
		add(rot);
		add(gruen);
		add(blau);
		add(grau);
		add(toll);
		
		//Actionlistener
		rot.addActionListener(this);
		gruen.addActionListener(this);
		blau.addActionListener(this);
		grau.addActionListener(this);
		toll.addActionListener(this);
		
		//Anzeige
		setVisible(true);
		setSize( 300, 225 );
	    setResizable( false );
	    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}

	@Override
	public void actionPerformed(ActionEvent e)
	{
		if (e.getActionCommand().equals("rot"))
		{
			getContentPane().setBackground(Color.red);
			repaint();
		}
		
		if (e.getActionCommand().equals("gruen"))
		{
			getContentPane().setBackground(Color.green);
			repaint();
		}
		
		if (e.getActionCommand().equals("blau"))
		{
			getContentPane().setBackground(Color.blue);
			repaint();
		}
		
		if (e.getActionCommand().equals("grau"))
		{
			getContentPane().setBackground(Color.gray);
			repaint();
		}
		
		if (e.getActionCommand().equals("Kann alles"))
		{
			if (getBackground().equals(Color.red))
			{
				getContentPane().setBackground(Color.green);
				repaint();
			}
			
			if (getBackground().equals(Color.green))
			{
				getContentPane().setBackground(Color.blue);
				repaint();
			}
			
			if (getBackground().equals(Color.blue))
			{
				getContentPane().setBackground(Color.gray);
				repaint();
			}
			
			if (getBackground().equals(Color.gray))
			{
				getContentPane().setBackground(Color.red);
				repaint();
			}
			
			else
			{
				getContentPane().setBackground(Color.red);
				repaint();
			}
			
		}
		
	}
}
 

Harry Kane

Top Contributor
Dein letztes else bezieht sich nur auf das direkt darüberstehende if. Wenn der Hintergrund nicht gleich Color.gray ist, wird er immer auf rot gesetzt.
 

PascalC

Mitglied
Also würde es reichen es zu else if zu ändern? Noch eine grundsätzliche Frage: Wie kann ich sicherstellen dass es sich nicht nur auf das darüberstehende bezieht? Wird das immer passieren wenn ich nur "else" schreibe?
 

Harry Kane

Top Contributor
Also würde es reichen es zu else if zu ändern? Noch eine grundsätzliche Frage: Wie kann ich sicherstellen dass es sich nicht nur auf das darüberstehende bezieht? Wird das immer passieren wenn ich nur "else" schreibe?
Was genau willst du zu "else if" ändern? Das letzte "else"? Dann musst du eine Bedingung in den if-Teil reinschreiben, und genau die hast du ja nicht, denn der else-Zwei soll ja betreten werden, wenn keine der voranstehenden if-Bedingungen erfüllt ist.
Die if-Abfragen nach if (e.getActionCommand().equals("Kann alles")) müssen geändert werden. Ab der zweiten if-Abfrage muss vor dem if eine else stehen.
 

VfL_Freak

Top Contributor
Moin,
Also würde es reichen es zu else if zu ändern?
nein, Du hast ja keine weitere Bedingung mehr

Noch eine grundsätzliche Frage: Wie kann ich sicherstellen dass es sich nicht nur auf das darüberstehende bezieht?
So:
Java:
if (e.getActionCommand().equals("Kann alles"))
{
  if (getBackground().equals(Color.red))
  {
    getContentPane().setBackground(Color.green);
    repaint();
  }
  else if(getBackground().equals(Color.green))
  {
    getContentPane().setBackground(Color.blue);
    repaint();
  }
  else if(getBackground().equals(Color.blue))
  {
    getContentPane().setBackground(Color.gray);
    repaint();
  }
  else if(getBackground().equals(Color.gray))
  {
    getContentPane().setBackground(Color.red);
    repaint();
  }
  else
  {
    getContentPane().setBackground(Color.red);
    repaint();
  }
}
Jetzt sind alle fünf Fälle (rot, grün, blau, grau, sonstige) abgedeckt!!

Oder nutze ein switch-Kostrukt, dass ist meistens übersichtlicher als diese extremen IF - ELSE IF - ELSE IF-Konstrukte !!

Gruß
Klaus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ActionEvent Press Enter per Code auslösen AWT, Swing, JavaFX & SWT 22
B JavaFX Verständnisfrage EventHandler<ActionEvent> Implementierung in meiner Klasse AWT, Swing, JavaFX & SWT 2
M JavaFX ActionEvent Button AWT, Swing, JavaFX & SWT 6
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
S JavaFX Unterschied MouseEvent und ActionEvent AWT, Swing, JavaFX & SWT 3
KilledByCheese Event Handling Vom ActionEvent auf String zugreifen - genaueres in der Beschreibung AWT, Swing, JavaFX & SWT 3
G Swing Durch GlassPane auf Button klicken und ActionEvent auslösen AWT, Swing, JavaFX & SWT 0
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
X AWT ActionEvent wirft NullPointerExpection Warum? AWT, Swing, JavaFX & SWT 42
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
J JavaFX ActionEvent AWT, Swing, JavaFX & SWT 8
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
M Swing ActionEvent soll von Anderem ActionEvent abhängen AWT, Swing, JavaFX & SWT 3
M JPopupMenu per Klick schließen und gleichzeitig ActionEvent auf JButton? AWT, Swing, JavaFX & SWT 15
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
L JFrame größe in einem ActionEvent ändern AWT, Swing, JavaFX & SWT 4
C Programm für 5 sekunden anhalten und actionevent abfangen AWT, Swing, JavaFX & SWT 18
M Arbeiten mit actionPerformed(ActionEvent) oder Alternative AWT, Swing, JavaFX & SWT 7
N Aufgabe: ActionEvent - Abfrage AWT, Swing, JavaFX & SWT 7
N Problem mit ActionEvent - Abfrage AWT, Swing, JavaFX & SWT 10
Dit_ Objekt mit ActionEvent übergeben AWT, Swing, JavaFX & SWT 2
B JFreeChart Balkendiagramm ActionEvent AWT, Swing, JavaFX & SWT 2
kirchrath Swing Aus ActionEvent Objekt herausfinden auf dem er ausgeführt wurde AWT, Swing, JavaFX & SWT 4
T JTable durch ActionEvent befüllen AWT, Swing, JavaFX & SWT 3
B ActionEvent Dateipfad als String übergeben AWT, Swing, JavaFX & SWT 11
M Frage zu ActionEvent? AWT, Swing, JavaFX & SWT 4
P KeyEvent methode an actionEvent methode weiterleiten AWT, Swing, JavaFX & SWT 5
M Eigenes ActionEvent / Eigener Listener AWT, Swing, JavaFX & SWT 2
G ActionEvent richtig anbringen AWT, Swing, JavaFX & SWT 7
C JButton-Name per ActionEvent rausfinden AWT, Swing, JavaFX & SWT 2
P actionlistener und actionevent AWT, Swing, JavaFX & SWT 2
M ActionEvent löst nicht aus AWT, Swing, JavaFX & SWT 4
T actionevent an modalen dialog AWT, Swing, JavaFX & SWT 5
L eigene Komponente, ActionEvent senden? AWT, Swing, JavaFX & SWT 3
M ActionEvent manuell senden AWT, Swing, JavaFX & SWT 7
S Neubaufbau eines Tabelleninhalts bei actionEvent AWT, Swing, JavaFX & SWT 4
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben