Karton in einer JComboBox

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Moin


Ich muss folgendes machen:

Ich habe einen String, float, Color und ein boolean Wert. Nun habe ich eine JComboBox und möchte dort den Namen abspeichern. Sprich den String den dieser stellt den Namen da. Nun muss ich aber später wieder darauf zurückgreifen. Lese ich den Wert aus ist ja klar das dort nur der String zurückgegeben wird. Ich brauche aber alles Daten.



Ich habe ein Karton mit dem Namen x
X hat ein Float-, ein Color- und ein boolean-Wert.
Diesen Karton packe ich in mein ComboBox. Zusehen soll der Name(x) sein.


Nun habe ich auch ein Kartong mit dem Namen y.
Y ebenfalls ein Float-, ein Color- und ein boolean-Wert.
Auch diesen Karton packe ich in die ComboBox (die selbe wie oben). Zusehen soll der Name(y) sein.


Wie kann ich nun wenn X selektiert ist auf die Werte von X zugreifen.
Die Frage die sich stellt ist wie speichere ich solche Datensätze ab?
 

martram

Aktives Mitglied
Mal rundimentär (und nicht unbedingt kompilierbar, da im Browser getippt)

Du bräuchtest ein "Datenobjekt", in dem du die zusammengehörigen Werte kapselst...

Code:
public class Box {
private String name;
private float aFloat;
... andere Attribute ...

... getter, ggf. Konstruktor und/oder setter ...
}

So ein vollständiges Objekt tust du nun in deine Combobox einfügen:

Code:
JComboBox combobox= new JCombobox();
Box m = new Box ("xyz", 3,3f, ...);
combobox.addItem (m);

Da du die Anzeige der Daten realisieren willst, implementierst du dir noch einen ListRenderer:

Code:
public class BasicListRenderer extends DefaultListCellRenderer{
	
	public BasicListRenderer(){
		setOpaque(true);
	}
	
	public Component getListCellRendererComponent(JList list,Object value,
		int index,	boolean isSelected, 	boolean cellHasFocus) {
		super.getListCellRendererComponent(list,  value,  index,  isSelected,  cellHasFocus);
		setText(((Box)value).getName()); //oder ähnlich, ggf Exceptions bedenken.
		return this;
	}
}
und weist diesen Rendere deiner Combobox zu:
Code:
combobox.setRenderer (new BasicListRenderer());

ahja, zugreifen war noch ;) Hier musst du natürlich wissen, was du brauchst: selektiertes Item, alle anderen etc. Im Prinzip einfach mit einem getter der combobox die Items die du brauchst holen und dann noch in dein Datenobjekt (hier: Box) casten.
Code:
Box selectedValue = (Box)combobox.getSelectedItem();
 
G

Guest

Gast
Danke martram! Ich finde es klasse das du mir hilfst, ist das erste mal das ich dieses Forum nutze.

Ich werde das umsetzen und werde dir gegen 18:00 Uhr berichten. Ich hoffe das es mir gelingen wird. Ich bin ja mal gespant was du zu meiner Lösung sagst. Aber danke nochmal !vielmals! Solche Antworten gibt es in den Büchern nicht. Ich hoffe auf deine weitere Unterstützung. Wie gesagt bis 18:00 Uhr
 
G

Guest

Gast
setText(((Box)value).getName()); //oder ähnlich, ggf Exceptions bedenken.
Wie du schon sagtes muss ich ggf. die Excaption abfangen. Wie muss es den aussehen wenn ich folgende Klassen habe?

Meine Box-Class
Code:
import java.awt.Color;

public class Karton4 {
	private String  name;
	private Float   wert;
	private Color   color;
	private boolean b;
	
	public Karton4(String name, float wert, Color color, boolean b) {
		this.name  = name;
		this.wert  = wert;
		this.color = color;
		this.b     = b;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Float getWert() {
		return wert;
	}

 	public void setWert(Float wert) {
		this.wert = wert;
	}

	public Color getColor() {
		return color;
	}

	public void setColor(Color color) {
		this.color = color;
	}

	public boolean isB() {
		return b;
	}

	public void setB(boolean b) {
		this.b = b;
	}
}

Die JComboBox:
Code:
....
   jcb = new JComboBox();	
   jcb.setFocusable(false);
   jcb.addActionListener(lauscher);
   jcb.setRenderer(new ComboBoxListe4());
.....
// und mit folgendem adde ich die Sachen:
// name, wert,... sind alles richtige variablen.
jcb.addItem(new schaubilder.p4.Karton4(name, wert, color, linie));

Der Listrenderer:
Code:
import java.awt.Component;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;

public class ComboBoxListe4 extends DefaultListCellRenderer {
	
	public ComboBoxListe4() {
		setOpaque(true);
	}

	public Component getListCellRendererComponent(JList list, Object value,	int index, boolean isSelected, boolean cellHasFocus) {
		super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
	        setText(((Karton4) value).getName()); // ????
		return this;
	}
}
[/code]
 
G

Guest

Gast
Das Problem was ich habe ist das der schon zu Anfang eine Exaption wirft, diese hat folgenden Namen:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Das liegt an dieser Codestelle:
Code:
setText(((Karton4) value).getName()); // ????
Bei der Initialisierung der ComoBox brennt er! Man beachte das anfangs nichts in der Box ist!
 

martram

Aktives Mitglied
najo, du siehts ja, dass dann in der Zeile irgendetwas Null ist. Dementsprechend solltest du das abfangen. Vmtl wird value null sein - dann also z.B. so:

Code:
if (value!=null){
setText(((Karton4) value).getName()); 
} //ggf noch nen elsezweig
 
G

Guest

Gast
Nun funktioniert die Initialisierung, aber sobald ich etwas dazu adde wird die ComboBox nur größer und es steht nichts drin??? Wenn ich einzweites mal etwas hinzufüge das selbe, es wird noch nicht mal ein zweites leeres Idem angezeigt???

Code:
		Karton4 box = new Karton4(name, wert, color, linie);					
		jcb.addItem(box);
 

martram

Aktives Mitglied
Naja, lässt sich von hier alles schlecht beurteilen. Ist denn Name z.B. länger als "" (enthält also Zeichen?)
Du addest auch in die richtige, sprich angezeigte JComboBox und nicht in eine andere Referenz? Hat die JComboBox bei der Initialisierung auch ein Model, das Veränderungen erlaubt? (also mutuable ist)

Probier einfach nen bischen im Renderer rum, was da angezeigt werden soll - z.B. mit Debug-Ausgaben:

Code:
System.out.println("value "+value);
if (value!=null){ 
System.out.println("name to display "+((Karton4) value).getName()+",end");
setText(((Karton4) value).getName()); 
} 
else {
setText ("Ich bin ein Null-Element und mein Else-Zweig sollte später gelöscht werden");
}
 
G

Guest

Gast
Also:

System.out.println("value "+value);
if (value!=null){
System.out.println("name to display "+((Karton4) value).getName()+",end");
setText(((Karton4) value).getName());
}

else {
setText ("Ich bin ein Null-Element und mein Else-Zweig sollte später gelöscht werden");
}

in den Markierten Bereich komme ich gar nicht rein. Egal ob bei der inizialisierung beim betätigen oder beim adden!
Ich bekomme haufenweise "value null" sogar nach dem hinzufügen.

Ich frage mich wo der Fehler ist???
 
G

Guest

Gast
Auch hier wieder dasselbe es werden keine Elemente in die Liste eingetragen? Aber dafür steht in der Selektierten Zeile(ganz oben) der String drin.
 

martram

Aktives Mitglied
Also die Codeteile, die du hier gepostet hast, sind soweit in Ordnung. Der Fehler wird also vmtl woanders liegen. Es bleiben dann 2 Möglichkeiten: du bastelst und suchst weiter selbst in deinem Code

oder du erstellst ein kleines Beispiel (3 Klassen sollten reichen; die Boxklasse und der Renderer sind ja im Prinzip fertig und ne winzige GUI). Vermutlich wird dir schon da auffallen, wo das Problem ist - wenn nicht kannst du dieses kleine Beispiel posten und jmd aus dem Forum schaut mal drüber. :wink:
 
G

Guest

Gast
if(Problem = gelöst){
neues Problem entsteht!
} else {
ist egal, wäre sowieso ein Traum!
}

Nun kann ich aber nur ein Element\Item hinzufügen! Beim zweiten will er nicht? Aber bis dahin klappt alles soweit.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
X Zeilen aus einer Textdatei einzelnd als String abrufen AWT, Swing, JavaFX & SWT 8
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben