JComboBox setSelectedItem(Object) Problem

casi91

Bekanntes Mitglied
Servus Community,

habe schon durch das Forum geschaut und auch ähnliche Threads gefunden, leider konnte mir keiner die Erleuchtung bringen.
Vielleicht klappts ja mit einem eigenen :)

Folgendes:
Ich lade Objekte aus einer DB und zeige diese in einer Combobox an

Java:
List<?> domainListe = crit.list();
for (int i=0; i<domainListe.size(); i++)		
{
	Kategorie kategorie = (Kategorie) domainListe.get(i);
	combobox.addItem(kategorie);
}

(Kategorie besitzt eine "toString()" Methode.)


Danach kann der Benutzer entsprechend einen Wert auswählen und speichern.
(Soweit so gut, dass funktioniert)

Nun soll beim nächsten Laden in der Combobox direkt das richtige Element selektiert sein.
Dies wollte ich durch die Methode: "setSelectedItem" lösen.

Da diese Methode intern ja mit "equals" arbeitet, dachte ich auch, dass es kein Problem ist.
Jedoch scheinen die Objekte nicht gleich zu sein.
Hier ein kleiner Test um zu schauen ob die Objekte gleich sind:
Java:
Kategorie kategorie = xxx.getMyKategorie();
Kategorie kategorie2 = combobox.getItemAt(1);
if (kategorie.equals(kategorie2))
{
	kategorie = kategorie2;
	combobKategorie.setSelectedItem(kategorie);
}

auch hierbei schlägt das "equals" fehl.
Wenn ich mir die Objekte jedoch im Debugger anschaue, scheinen diese soweit den gleichen Inhalt zu haben.

Was habe ich übersehen?

Danke schonmal :)
 

Marco13

Top Contributor
'Kategorie' muss die equals- und hashCode-Methoden richtig überschreiben. Moderne IDEs können das automatisch (Eclipse Rechtsklick auf Klasse -> Source -> Generate equals and hashCode). Ansonsten websuche oder genauer beschreiben wie "Kategorie" aussieht.
 

casi91

Bekanntes Mitglied
Hallo,
leider hat das mit "Generate equals..." nichts geholfen.

hier mal der Quellcode meine Klasse "Kategorie" (nachdem ich "Generate..." ausgeführt habe)
(eben vergessen zu erwähnen, sieht man nun aber in der Klasse, ich arbeite mit Hibernate und Annotations)

Java:
package my.test.Database;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

@Entity
@Table( name = "KATEGORIE")
public class Kategorie {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY) 
	@Column(name = "ID")	
	private Integer id;
	
	@Column(name="BEZEICHNUNG")
	private String bezeichnung;	
	
	@OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL, mappedBy="myKategorie")
	private Set <Filiale> filiale = new HashSet<Filiale>();	
	
	public Kategorie() {
	}
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getBezeichnung() {
		return bezeichnung;
	}

	public void setBezeichnung(String bezeichnung) {
		this.bezeichnung = bezeichnung;
	}

	public Set <Filiale> getFiliale() {
		return filiale;
	}

	public void setFiliale(Set <Filiale> filiale) {
		this.filiale = filiale;
	}
	
	public String toString() { 
		return this.getBezeichnung(); 
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((bezeichnung == null) ? 0 : bezeichnung.hashCode());
		result = prime * result + ((filiale == null) ? 0 : filiale.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Kategorie other = (Kategorie) obj;
		if (bezeichnung == null) {
			if (other.bezeichnung != null)
				return false;
		} else if (!bezeichnung.equals(other.bezeichnung))
			return false;
		if (filiale == null) {
			if (other.filiale != null)
				return false;
		} else if (!filiale.equals(other.filiale))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	} 

}
 

casi91

Bekanntes Mitglied
Ah mir ist grad selbst was aufgefallen ^.^

Ich habe ja noc ein Attribut einer anderen Klasse (Filiale) in meinr Klasse "Kategorie"
Also muss ich dort ja wahrscheinlich auch das ganze mit Generate... machen?

Das hab ich auch gemacht, nur muss ich jetzt schauen, warum ich einen Fehler bekomme:

"illegal access to loading collection"

Aber das gehört ja erst nicht mehr zu dieser Frage.

Überschreibt man hashCode() und equals(Object obj) am besten immer?
Oder wirklich nur dann, wenn mans auch zu 100% braucht?
 

casi91

Bekanntes Mitglied
So funktioniert nun.
Danke für den Tipp, genau das war mein Problem.

Das andere Problem das ich hatte war ein Verständnissproblem mit Hibernate, woran ich noch arbeiten muss.
Aber das, ist eine andere Geschichte :-D
 

Marco13

Top Contributor
Überschreibt man hashCode() und equals(Object obj) am besten immer?
Oder wirklich nur dann, wenn mans auch zu 100% braucht?

Nicht so einfach. Das Problem ist, dass man u.U. nicht weiß, ob jemand anderes es vielleicht braucht - oder eben "versehentlich" verwendet, weil er solche Objekte in eine List packt oder so. Man kann wohl sagen, dass es bei "Modellobjekten" praktisch IMMER empfehlenswert ist. Bei sowas wie einer GUI-Klasse macht es natürlich keinen Sinn....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
M JComboBox ersten Eintrag leerlassen bzw. Platzhalter Java Basics - Anfänger-Themen 1
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
H JComboBox wird nicht angezeigt Java Basics - Anfänger-Themen 3
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
T Einträge in jComboBox aus Liste übernehmen Java Basics - Anfänger-Themen 1
T Auslesen mehrerer jComboBox (-en) Java Basics - Anfänger-Themen 4
H JCombobox Java Basics - Anfänger-Themen 1
D JComboBox duplizieren Java Basics - Anfänger-Themen 2
T jComboBox Java Basics - Anfänger-Themen 9
GadgetSofa jComboBox mit dem Button verbinden. Aber wie?? Java Basics - Anfänger-Themen 4
A GUI Absturz nach 3x benutzen einer JComboBox Java Basics - Anfänger-Themen 11
S Erste Schritte JComboBox Java Basics - Anfänger-Themen 1
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
T Datentypen Jcombobox Array Java Basics - Anfänger-Themen 1
J JComboBox in andere Klasse Java Basics - Anfänger-Themen 2
S Variablen auslesen beim JCombobox Java Basics - Anfänger-Themen 0
K JCombobox Eclipse Java Basics - Anfänger-Themen 7
D JComboBox erzeugen Java Basics - Anfänger-Themen 1
T JComboBox Java Basics - Anfänger-Themen 3
B ArrayLists in JCombobox Java Basics - Anfänger-Themen 10
M JComboBox und ItemListener/ItemEvent Problem Java Basics - Anfänger-Themen 3
M JComboBox Auswahl Java Basics - Anfänger-Themen 10
N Compiler-Fehler JComboBox DefaultListCellRenderer Java Basics - Anfänger-Themen 2
J JComboBox - Auswahl auslesen Java Basics - Anfänger-Themen 2
J jcombobox.getSelectedItem - nullpointerexception Java Basics - Anfänger-Themen 3
M JComboBox Obergrenzen/Untergrenze festlegen? Java Basics - Anfänger-Themen 5
B JComboBox(editable) Java Basics - Anfänger-Themen 6
K JComboBox hat volle Höhe uber das gesamte JPane, warum? Java Basics - Anfänger-Themen 2
S JComboBox mit ArrayList füllen Java Basics - Anfänger-Themen 7
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
S JComboBox füllen Java Basics - Anfänger-Themen 9
C JComboBox Java Basics - Anfänger-Themen 9
R Auf auswahl in ner JComboBox reagieren Java Basics - Anfänger-Themen 3
T Frage zu JComboBox Java Basics - Anfänger-Themen 6
G JComboBox wird nicht gezeichnet Java Basics - Anfänger-Themen 3
N JComboBox mit Dateinamen befüllen Java Basics - Anfänger-Themen 7
M JComboBox => Item String => Color Java Basics - Anfänger-Themen 2
StrikeTom Editable JComboBox + enter Wie??? Java Basics - Anfänger-Themen 3
J JComboBox Listener Java Basics - Anfänger-Themen 6
F Werte aus JComboBox auslesen und Zahlen zuordnen Java Basics - Anfänger-Themen 5
S JComboBox Platzhalter Java Basics - Anfänger-Themen 7
J jComboBox auf default setzen wie? Java Basics - Anfänger-Themen 3
J daten über jComboBox ausgeben wie? Java Basics - Anfänger-Themen 2
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
E JComboBox Java Basics - Anfänger-Themen 4
J jComboBox.getSelectedIndex() Java Basics - Anfänger-Themen 8
J Funktion Auslösen über JComboBox Java Basics - Anfänger-Themen 2
T JComboBox klappt nur ein- bis zweimal auf Java Basics - Anfänger-Themen 30
S Kein Event bei Click auf JComboBox Java Basics - Anfänger-Themen 4
Developer_X JComboBox getSelectedFilè??? Java Basics - Anfänger-Themen 4
T Daten eines Ordners in JCombobox anzeigen Java Basics - Anfänger-Themen 5
M Einträge in JComboBox farblich hinterlegen? Java Basics - Anfänger-Themen 2
6 Dritte JComboBox in Abhaengigkeit von zwei vorherigen Java Basics - Anfänger-Themen 4
G 2. JComboBox in Abhängigkeit der 1. JCombobox füllen Java Basics - Anfänger-Themen 2
S Problem mit JComboBox Java Basics - Anfänger-Themen 9
H jcombobox mit nur einem Item Java Basics - Anfänger-Themen 7
G Inhalt einer JComboBox wechseln Java Basics - Anfänger-Themen 5
G Problem mit JComboBox Java Basics - Anfänger-Themen 15
G JComboBox Strukturiert anzeigen Java Basics - Anfänger-Themen 6
Schandro Hotkeys bei JComboBox abschalten Java Basics - Anfänger-Themen 3
G JComboBox soll beim Öffnen eine andere JCB öffnen Java Basics - Anfänger-Themen 2
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
G JComboBox - BasicComboPopup Java Basics - Anfänger-Themen 4
S Inhalt der JComboBox vergrößtert die JCB ? Java Basics - Anfänger-Themen 2
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
mwildam JComboBox FocusGained feuert nicht wenn editable Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
S Jcombobox und 2maliges anzeigen wegen ItemStateChanged? Java Basics - Anfänger-Themen 3
W setModel feuert ActionEvent bei JComboBox Java Basics - Anfänger-Themen 2
G Frage zu JComboBox Java Basics - Anfänger-Themen 2
W Actionlistener oder Itemlistener bei JCombobox ? Java Basics - Anfänger-Themen 4
G JComboBox Java Basics - Anfänger-Themen 7
G JComboBox macht Probleme Java Basics - Anfänger-Themen 7
G JComboBox alphabetisch sortieren Java Basics - Anfänger-Themen 2
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
G JComboBox um eine Methode erweitern Java Basics - Anfänger-Themen 2
G jcombobox deaktivieren Java Basics - Anfänger-Themen 4
M Werte aus Jcombobox sollten als int-Werte zurück gegeben . Java Basics - Anfänger-Themen 7
D Items in JComboBox überprüfen Java Basics - Anfänger-Themen 3
G JComboBox zweckentfremden ? Java Basics - Anfänger-Themen 5
N JCombobox Pfeil nach unten bild auf linke seite, geht das? Java Basics - Anfänger-Themen 8
T JComboBox Problem Java Basics - Anfänger-Themen 4
D JComboBox titel Java Basics - Anfänger-Themen 16
M füllen JComboBox funktioniert nicht Java Basics - Anfänger-Themen 11
J JCombobox Item auswählen Java Basics - Anfänger-Themen 13
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
dercheffe 3x jcombobox nacheinander füllen Java Basics - Anfänger-Themen 6
J Inhalt der JComboBox variable Java Basics - Anfänger-Themen 2
O JComboBox Item soll sich als String speichern Java Basics - Anfänger-Themen 5
D JComboBox ohne ItemListener Java Basics - Anfänger-Themen 18
B unvollständige Anzeige von JComboBox Werten Java Basics - Anfänger-Themen 5
G JComboBox gibt SelectedItem immer doppelt aus Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben