Event Handling Listener spielt verrückt

llabusch

Mitglied
Liebe Java-Gemeinde,

Beim Programmieren eines Listeners für eine CheckBox bin ich am Verzweifeln...

Der Listener bekommt zwar natürlich die Änderungen an der Box mit, jedoch führt er einfach alle If-Zweige aus und wählt die CheckBox danach wieder ab! Das heißt nach einem Klick darauf bleibt der Haken nicht sichtbar, er wird einen Wimpernschlag eingesetzt, dann werden alle If-Zweige ausgeführt und dann ist er wieder verschwunden....

Entferne ich aber die Anweisungen im Listener, also:

Java:
@Override
		public void itemStateChanged(ItemEvent e){
	    
				if(e.getSource() instanceof JCheckBox){
				

				}
		}

Passiert beim Anwählen natürlich auch nichts, aber wenigstens bleibt der Haken drin!

Was kann das sein?

Hier mal das komplette Listing....


Danke schon mal! :)

Java:
package de.fernschulen.bildbetrachter;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;

public class Bildbetrachter extends JFrame{
	
	//automatisch �ber Eclipse erg�nzt
	private static final long serialVersionUID = 5926848670766709720L;

	//f�r die Schaltfl�chen
	private JButton oeffnen, beenden, oeffnenSchau, beendenSchau;
	//f�r die Eingabe
	private JTextField eingabe;
	//f�r die Anzeige
	private BildPanel bildAnzeige, bildAnzeigeSchau;
	//f�r die Anpassung
	private JCheckBox skalieren;
	
	//die innere Klasse mit dem Listener
	class MeinListener implements ActionListener, ItemListener {									//Den Listener für die Checkbox mit einem ItemListener erweitern

		@Override
		public void actionPerformed(ActionEvent e) {
			//f�r die Schaltfl�chen zum Beenden
			if (e.getActionCommand().equals("Ende"))
				System.exit(0);
			//f�r die Auswahl eines einzelnen Bildes
			if (e.getActionCommand().equals("Laden")) 
				bildLaden();
			//f�r die Auswahl der Bilder f�r die Bilderschau
			if (e.getActionCommand().equals("LadenSchau")) 
				bilderSchau();
		}
		@Override
		public void itemStateChanged(ItemEvent e){
	    
				if(e.getSource() instanceof JCheckBox){
					
					if(skalieren.isSelected() == true){
						
						JOptionPane.showMessageDialog(null, "Gewählt");
					}
					else
					JOptionPane.showMessageDialog(null, "Nicht gewählt");
					
				}
		}
	}

	//der Konstruktor
	public Bildbetrachter(String titel) {
		super(titel);
		initGUI();
	}
	
	//die Methode zum Erstellen der Oberfl�che
	private void initGUI() {
		//die Panels f�r die Register
		JPanel registerEinzel =  new JPanel();
		JPanel registerSchau =  new JPanel();

		//das TabbedPane
		JTabbedPane panelKomplett =  new JTabbedPane();
		
		//das Register f�r die Einzelanzeige
		//eine neue Instanz f�r das Panel mit der Grafik erzeugen
		bildAnzeige = new BildPanel();
		
		//die Komponenten erstellen und einbauen
		registerEinzel.setLayout(new FlowLayout(FlowLayout.LEFT));
		registerEinzel.add(bildAnzeige);
		
		oeffnen = new JButton("Bild laden");
		beenden = new JButton("Beenden");
		oeffnen.setActionCommand("Laden");
		beenden.setActionCommand("Ende");
		eingabe = new JTextField(20);
		
		skalieren = new JCheckBox("Anpassen");
		
		registerEinzel.add(new JLabel("Bilddatei: "));
		registerEinzel.add(eingabe);
		registerEinzel.add(skalieren);
		registerEinzel.add(oeffnen);
		registerEinzel.add(beenden);
		
		//die Listener verbinden
		MeinListener listener = new MeinListener();
		oeffnen.addActionListener(listener);
		beenden.addActionListener(listener);
		skalieren.addItemListener(listener);																	//Die Checkbox mit dem Listener verbinden
		
		//das Register f�r die Bilderschau
		//eine neue Instanz f�r das Panel mit der Grafik erzeugen
		bildAnzeigeSchau = new BildPanel();
		
		//die Komponenten erstellen und einbauen
		registerSchau.setLayout(new FlowLayout(FlowLayout.LEFT));
		registerSchau.add(bildAnzeigeSchau);
		
		oeffnenSchau = new JButton("Bilder laden");
		beendenSchau = new JButton("Beenden");
		oeffnenSchau.setActionCommand("LadenSchau");
		//die Schaltfl�che zum Beenden bekommt dasselbe ActionCommand wie im anderen Register
		beendenSchau.setActionCommand("Ende");
		
		registerSchau.add(oeffnenSchau);
		registerSchau.add(beendenSchau);
		
		//die Listener verbinden
		oeffnenSchau.addActionListener(listener);
		beendenSchau.addActionListener(listener);
		
		//und nun alles zusammenbauen
		
		panelKomplett.add("Einzelbild",registerEinzel);
		panelKomplett.add("Bilderschau",registerSchau);
		
		add(panelKomplett);
		
		//Gr��e setzen, anzeigen, keine Gr��en�nderungen zulassen und Standard-Verhalten festlegen
		setSize(350,450);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	

	//die Methode zum Laden eines Bildes �ber den Dialog
	private void bildLaden() {
		//einen Standard-�ffnen-Dialog erzeugen
		BildbetrachterDialog dialog = new BildbetrachterDialog();
		//die R�ckgabe holen
		String datei = dialog.dialogZeigen();
		//wenn eine Datei ausgew�hlt wurde, laden
		if (datei != null) {
			bildAnzeige.grafikLaden(datei, skalieren.isSelected());
			//den Namen der Datei im Eingabefeld anzeigen
			eingabe.setText(datei);
		}
	}
	
	//die Methode zur Anzeige der Bilderschau
	private void bilderSchau() {
		//einen Standard-�ffnen-Dialog erzeugen
		BildbetrachterDialog dialogSchau = new BildbetrachterDialog();
		//die R�ckgabe holen und in einem Array vom Typ File ablegen 
		File[] dateien = dialogSchau.dialogZeigenMehrere();
		
		//wenn eine Datei ausgew�hlt wurde, alle Dateien nacheinander anzeigen
		if (dateien != null) {
			for (File datei: dateien) {
				bildAnzeigeSchau.grafikLaden(datei.toString(), true);
				//nach jeder Datei machen wir eine kurze Pause
				try {
					Thread.sleep(5000);
				} 
				catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
 
Zuletzt bearbeitet:

BRoll

Bekanntes Mitglied
Java:
   if(skalieren.isSelected() == true){
                       
                        JOptionPane.showMessageDialog(null, "Gewählt");
                    }
                    else
                    JOptionPane.showMessageDialog(null, "Nicht gewählt");

Da fehlen noch die Klammern fürs else.
Sonst ist ja das else nur für die eigene Zeile,
und das "nicht gewählt" fenster ein neuer, zweiter befehl.
 
Zuletzt bearbeitet:

llabusch

Mitglied
Java:
   if(skalieren.isSelected() == true){
                       
                        JOptionPane.showMessageDialog(null, "Gewählt");
                    }
                    else
                    JOptionPane.showMessageDialog(null, "Nicht gewählt");

Da fehlen noch die Klammern fürs else.
Sonst ist ja das else nur für die eigene Zeile,
und das "nicht gewählt" fenster ein neuer, zweiter befehl.


Danke für die Antwort, aber auch das setzen der Klammern hat keine Verbesserung gebracht.... :(
 

strußi

Top Contributor
ich hab die erfahrung gemacht, dass man checkboxen auch gut mit dem actionlistener verbinden kann,
Java:
@Override
        public void actionPerformed( ActionEvent e){
            if( e.getSource() instanceof JCheckBox){ //Prüfen, ob das auslösende Object eine Checkbox ist
                JCheckBox jcb =( JCheckBox)e.getSource();  //Objectreferenz an ein CheckBox Object übergeben
                if( jcb.isSelected() ==true){ //Prüfen, was der aktuelle Stattus des Object ist - Dieser Zweig prüft ob nach dem klick auf die CheckBox diese ausgewählt ist oder nicht
                    int anzahl =Integer.parseInt( durchlaeuferT.getText()) +1; //Das TextField auslesen und dem Zahlenwert um eins erhöhen
                    durchlaeuferT.setText( Integer.toString( anzahl)); //Dem TextField mit dem neuen Wert überschreiben
                } else{ //Wenn die Checkbox nach dem klick nicht mehr ausgewählt ist.
                    int anzahl =Integer.parseInt( durchlaeuferT.getText()) -1; //Das TextField auslesen und dem Zahlenwert um eins erhöhen
                    durchlaeuferT.setText( Integer.toString( anzahl)); //Dem TextField mit dem neuen Wert überschreiben
                }
            } else{}
        }
 

llabusch

Mitglied
ich hab die erfahrung gemacht, dass man checkboxen auch gut mit dem actionlistener verbinden kann,
Java:
@Override
        public void actionPerformed( ActionEvent e){
            if( e.getSource() instanceof JCheckBox){ //Prüfen, ob das auslösende Object eine Checkbox ist
                JCheckBox jcb =( JCheckBox)e.getSource();  //Objectreferenz an ein CheckBox Object übergeben
                if( jcb.isSelected() ==true){ //Prüfen, was der aktuelle Stattus des Object ist - Dieser Zweig prüft ob nach dem klick auf die CheckBox diese ausgewählt ist oder nicht
                    int anzahl =Integer.parseInt( durchlaeuferT.getText()) +1; //Das TextField auslesen und dem Zahlenwert um eins erhöhen
                    durchlaeuferT.setText( Integer.toString( anzahl)); //Dem TextField mit dem neuen Wert überschreiben
                } else{ //Wenn die Checkbox nach dem klick nicht mehr ausgewählt ist.
                    int anzahl =Integer.parseInt( durchlaeuferT.getText()) -1; //Das TextField auslesen und dem Zahlenwert um eins erhöhen
                    durchlaeuferT.setText( Integer.toString( anzahl)); //Dem TextField mit dem neuen Wert überschreiben
                }
            } else{}
        }


Danke, mit dem ActionListener läuft alles prima!!! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
T SWT: Listener auf einem Button reagiert nicht AWT, Swing, JavaFX & SWT 2
L Swing JTextField Content-Listener AWT, Swing, JavaFX & SWT 4
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
M Ansätze zur Kombination mehrerer Listener für Interaktion AWT, Swing, JavaFX & SWT 19
C JLabel Listener auf Textänderung? AWT, Swing, JavaFX & SWT 5
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2
El_Lobo Swing Problem bei Methodenaufruf in innerer Klasse bei Listener AWT, Swing, JavaFX & SWT 3
S Wem füge ich welchen Listener hinzu? AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
E JComboBox Listener AWT, Swing, JavaFX & SWT 2
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
S jTextField Listener AWT, Swing, JavaFX & SWT 7
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
F JCalendar mouseclick listener AWT, Swing, JavaFX & SWT 2
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
T TransformGroup Listener AWT, Swing, JavaFX & SWT 8
O Swing JTable Listener AWT, Swing, JavaFX & SWT 2
O Collection Listener AWT, Swing, JavaFX & SWT 6
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
L JTextfield Listener AWT, Swing, JavaFX & SWT 3
C Listener Probleme AWT, Swing, JavaFX & SWT 6
N Listener für Variable AWT, Swing, JavaFX & SWT 4
C Swing Listener für TabPanel AWT, Swing, JavaFX & SWT 8
B Line aus Listener? AWT, Swing, JavaFX & SWT 11
G Model,Listener und background jobs AWT, Swing, JavaFX & SWT 4
1 JList - clearSelection nicht berücksichtigen im Listener AWT, Swing, JavaFX & SWT 7
I Swing Listener auf JPanel AWT, Swing, JavaFX & SWT 9
Dit_ MutableComboBoxModel | Listener fehlt ? AWT, Swing, JavaFX & SWT 6
T Swing JSlider und Adjustment-Listener wollen nicht so recht AWT, Swing, JavaFX & SWT 2
N Swing Textfield listener AWT, Swing, JavaFX & SWT 2
S Combo Box action listener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben