JComboBox + ItemListener

Jumanji

Mitglied
Hello liebe Community,

ich habe das Problem, dass der ItemListener in einer JComboBox iwie nicht will???:L

Code:
name.addActionListener(this);
im Konstruktor
Code:
public void itemStateChanged(ItemEvent evt) 
	{
		if(evt.getSource().toString().equals("test"))
		{
			System.out.println("Test");
		}
	}

Ich habe im if-statement auch schon anderes versucht aber ohne erfolg:(

Was muss ich ändern bzw ändern damit es "Test" auf der Konsole ausgibt?

Danke im Vorraus
 

Jumanji

Mitglied
Okay das war nen bisschen dumm vonmir :D

Funktioniert aber auch mit
Code:
name.addItemListener(this);
nicht :(
 

VfL_Freak

Top Contributor
Moin,

und was sollen wir jetzt ohne weitere Infos dazu sagen ??
Allenfalls, dass "evt.getSource().toString()" eben ungleich "test" ist ..... :noe:

Gruß KlAus
 

Harry Kane

Top Contributor
Wenn der erwartete Output nicht erscheint, wird der entsprechende Codeblock offenbar nicht betreten. Dann besteht eine simple Debugging-Strategie darin, herauszufinden, an welcher Stelle der Code "steckenbleibt". Um das herauszufinden, könntest du ein System.out.println Statement in deinen Code einbauen, z. B. ein "System.out.println(evt.getSource().toString())" zu Beginn der itemStateChanged-Methode. Daran würdest du sehen, ob die Methode gar nicht erst betreten wird, oder der Stringvergleich fehlschlägt. Ich vermute mal sehr stark letzteres.
 

Jumanji

Mitglied
Code:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

public class Main implements ItemListener
{
	private static String[] namen={" ", "test"};
	private static JFrame frm;
	private static JTextField i1,i2;
	private static JComboBox name=new JComboBox(namen);
	
	public Main()
	{
		name.addItemListener(this);
	}
	
	public static void setWerte()
	{
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		
		frm=new JFrame();
		i1=new JTextField(3);
		i2=new JTextField(3);
		
		frm.setSize(500, 400);
		frm.setLocation(dim.width/2-frm.getSize().width/2, dim.height/2-frm.getSize().height/2);
		frm.setLayout(null);
		frm.setVisible(true);
		frm.setDefaultCloseOperation(frm.EXIT_ON_CLOSE);
		
		name.setBounds(75, 50, 100, 20);
		i1.setBounds(50, 150, 50, 20);
		i2.setBounds(150, 150, 50, 20);
		
		frm.add(name);
		frm.add(i1);
		frm.add(i2);
		
		name.setVisible(true);
		i1.setVisible(true);
		i2.setVisible(true);
	}
	
	public static void main(String[]args)
	{
		setWerte();
	}

	public void itemStateChanged(ItemEvent evt) 
	{
		System.out.println("Test");
		if(evt.getSource().toString()=="test")
		{
			System.out.println("Test");
		}
	}
	
}

Also die itemStateChanged methode wird gar nicht erst betreten wenn ich in der Box test auswähle:(
Ich sehe den fehler nicht :(
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Du addest im Konstruktor von Main die gerade entstehende Instanz von Main als ItemListener der JCheckBox. Nur erzeugst du in deinem Code gar keine Instanz von Main.
Schlechte Lösung: schreibe irgendwo in deiner setWerte-methode die Zeile " new Main()" hin.
Bessere Lösung:
1. entferne alle statics bis auf das in public static void main(String[]args).
2. verschiebe den Aufruf von setWerte in den Konstruktor von Main.
3. Ersetze in der public static void main den Aufruf von setWerte durch new Main().

Klar soweit?
 

Harry Kane

Top Contributor
In deiner Main-Klasse gibt es eine Methode public static void main(String[] args). Deshalb kannst du diese Klasse von der Kommandozeile oder von einer DIE aus laufen lassen. Die Java Laufzeitumgebung ruft dabei zunächst die o.g. public static void main Methode auf. In deinem Fall rufst du von der static main die ebenfalls statische Methode setWerte auf. In dieser Methode erzeugst du einen JFrame, füllst ihn mit Components und machst ihn sichtbar. So weit, so gut. Du rufst aber nie den Konstruktor der Klasse Main auf. Und nur im Konstruktor von Main wird der ItemListener geaddet!
Normalweise erzeugt man in der static main Methode eine Instanz der Klasse und macht damit ggf. irgendwas, z. B. ruft Instanzmethoden auf. Dieser Konstruktoraufruf passiert allerdings nicht automatisch, sondern muss explizit vom Benutzer programmiert werden.
Genauer kann ich es leider nicht erklären. Ich habe mich als blutiger Java Anfänger mit den Konzepten von Klassen und Instanzen bzw. statischen und nichtstatischen Methoden und Variablen auch etwas schwer getan. Aber als der Groschen dann gefallen war, war es auf einmal sonnenklar.
 

Jumanji

Mitglied
Ok danke :)

Ich hab deinen Vorschlag umgesetzt, allerdings wird die methode jetzt 2 mal ausgeführt :eek:
Code:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

public class Main implements ItemListener
{
	private String[] namen={" ", "test"};
	private JFrame frm;
	private JTextField i1,i2;
	private JComboBox name=new JComboBox(namen);
	
	public Main()
	{
		name.addItemListener(this);
		
		setWerte();
	}
	
	public void setWerte()
	{
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		
		frm=new JFrame();
		i1=new JTextField(3);
		i2=new JTextField(3);
		
		frm.setSize(500, 400);
		frm.setLocation(dim.width/2-frm.getSize().width/2, dim.height/2-frm.getSize().height/2);
		frm.setLayout(null);
		frm.setVisible(true);
		frm.setDefaultCloseOperation(frm.EXIT_ON_CLOSE);
		
		name.setBounds(75, 50, 100, 20);
		i1.setBounds(50, 150, 50, 20);
		i2.setBounds(150, 150, 50, 20);
		
		frm.add(name);
		frm.add(i1);
		frm.add(i2);
		
		name.setVisible(true);
		i1.setVisible(true);
		i2.setVisible(true);
	}
	
	public static void main(String[]args)
	{
		new Main();
	}

	public void itemStateChanged(ItemEvent evt) 
	{
		if(name.getSelectedItem().toString()=="test")
		{
			System.out.println("Test");
		}
	}
	
}

Was ist denn jetzt falsch?

Ausgabe: Test
Test
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Bei jeder "Betätigung" der JComboBox werden zwei Events erzeugt: einer für das deselektieren des alten, und einer für das selektieren des neuen Items.
Ausserdem werden Strings mit equals verglichen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing JComboBox, ItemListener gibt 2x aus AWT, Swing, JavaFX & SWT 2
L unbestimmt viele JComboBox und ItemListener dazu erstellen AWT, Swing, JavaFX & SWT 2
T JComboBox: ActionListener/ItemListener wie nur auf bestimmte Events reagieren? AWT, Swing, JavaFX & SWT 7
SebSnake ItemListener + JComboBox AWT, Swing, JavaFX & SWT 2
G Swing JComboBox: Probleme mit ItemListener AWT, Swing, JavaFX & SWT 3
m@nu JComboBox & ItemListener: per Code 1. Item wählen AWT, Swing, JavaFX & SWT 2
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
R JComboBox abfragen AWT, Swing, JavaFX & SWT 1
Esquid If Befehl bei JComboBox AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
D JComboBox Strings aus JTextFields zuordnen AWT, Swing, JavaFX & SWT 2
F JComboBox und Model AWT, Swing, JavaFX & SWT 10
I Editierbare JComboBox, die nur Ganzzahlen als Eingabewerte zulässt AWT, Swing, JavaFX & SWT 3
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
D Swing JCombobox Weiße Leerzeilen AWT, Swing, JavaFX & SWT 10
G JComboBox: Arrow-Button permanent anzeigen AWT, Swing, JavaFX & SWT 4
D Swing Java JComboBox Example AWT, Swing, JavaFX & SWT 16
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
D Swing "blaues" Element aus JComboBox erhalten AWT, Swing, JavaFX & SWT 6
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
T JPanelsteuerung mit JComboBox AWT, Swing, JavaFX & SWT 5
N Swing Duplikate im Jcombobox vermeiden AWT, Swing, JavaFX & SWT 15
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
M Alle Schriftarten in JComboBox AWT, Swing, JavaFX & SWT 5
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
Sin137 JComboBox mit Generics AWT, Swing, JavaFX & SWT 14
R JComboBox erweitern AWT, Swing, JavaFX & SWT 5
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
V Editierbare JComboBox AWT, Swing, JavaFX & SWT 2
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
F neuen Menüpunkt in jcombobox einfügen AWT, Swing, JavaFX & SWT 1
F Swing Jcombobox mit manueller Rückgabe AWT, Swing, JavaFX & SWT 4
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
S JComboBox mit mehreren Spalten? AWT, Swing, JavaFX & SWT 6
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
D Swing Erstes Item einer JCombobox in JTable anzeigen AWT, Swing, JavaFX & SWT 2
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
S JComboBox UTF-8 Codierung zuweisen AWT, Swing, JavaFX & SWT 5
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
I JComboBox gibt bei ausgewählten ITem NullPointer an... AWT, Swing, JavaFX & SWT 3
D Swing JCombobox - Tooltip Location ändern AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
F Swing jComboBox auslesen AWT, Swing, JavaFX & SWT 6
O Swing TableCellRenderer und JComboBox AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
O JComboBox - autom. Selektieren AWT, Swing, JavaFX & SWT 6
J JComboBox - wie getSelectedItem() überschreiben? AWT, Swing, JavaFX & SWT 8
S Swing Jcombobox und array AWT, Swing, JavaFX & SWT 6
D Swing JComboBox aktualisieren AWT, Swing, JavaFX & SWT 4
E JComboBox AWT, Swing, JavaFX & SWT 8
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
H Swing Element aus JComboBox auswählen AWT, Swing, JavaFX & SWT 2
H JCombobox inhalt löschen AWT, Swing, JavaFX & SWT 17
N Swing JCombobox - PopupMenu-Inhalt mit KSKB AWT, Swing, JavaFX & SWT 2
O JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
S Swing JComboBox mit Datenbank füllen AWT, Swing, JavaFX & SWT 16
S Inhalt einer JComboBox aktualisieren AWT, Swing, JavaFX & SWT 6
F Swing JComboBox in JTable AutoComplete + Tab AWT, Swing, JavaFX & SWT 4
O JComboBox getSelectedItem AWT, Swing, JavaFX & SWT 4
M JComboBox Hintergrundfarbe des gewählten Items AWT, Swing, JavaFX & SWT 3
B Swing Problem: Horizontaler Scrollbalken in JComboBox hinzufügen AWT, Swing, JavaFX & SWT 4
M JCombobox mit ID und Text AWT, Swing, JavaFX & SWT 4
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
C Swing Dynamische JComboBox (Filter) AWT, Swing, JavaFX & SWT 28
M JComboBox Item-Auswahl in JTable AWT, Swing, JavaFX & SWT 2
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
D JCombobox mit Linien Styles AWT, Swing, JavaFX & SWT 4
H Unterschiedliche JComboBox je JTable Zeile AWT, Swing, JavaFX & SWT 4
B jCombobox addItem funktioniert nicht AWT, Swing, JavaFX & SWT 9
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
G Swing JComboBox anpassen AWT, Swing, JavaFX & SWT 6
M Item in JComboBox umbenennen AWT, Swing, JavaFX & SWT 5
M Swing Busy Waiting Problem (JComboBox) AWT, Swing, JavaFX & SWT 11
C JComboBox Renderer Problem AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben