JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc.

Paz1

Mitglied
Hallo zusammen,
ich verstehe leider nicht so recht, wie ich einen wirklichen Nutzen aus einer ComboBox(o ä) ziehen kann.
Nach meinem Verständnis muss eine Combobox eigentlich meistens vom Typ String sein, da der Nutzer mit den Auswahlmöglichkeiten ja sonst wenig anfangen kann. Vermutlich steht als Auswahl meist der Name(String) der Instanz einer Klasse.
Mein Problem ist nun, dass ich jetzt zwar etwas mit Namen machen kann, aber ich will ja vor allem mit der Instanz (zu der dieser Name gehört) weiter arbeiten. Ich bekommen also die Verknüpfung nicht hin...
Vielen Dank schon mal für die Hilfe! Ich hoff ihr könnt verstehen, was ich meine xD

Gruß Paz1
 
X

Xyz1

Gast
Hallo, so:
Java:
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class MyBox extends JComboBox<String> {
	private HashMap<String, Object> map = new HashMap<String, Object>();

	public MyBox(Object[] options) {
		for (Object object : options) {
			this.addItem(object.toString());
			map.put(object.toString(), object);
		}
	}

	public Object getSelection() {
		return map.get(this.getSelectedItem().toString());
	}

	public static void main(String[] args) {
		JFrame f = new JFrame();
		MyBox b = new MyBox(new Object[] { "hallo", "Du", "da" });
		f.add(b);
		f.pack();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		b.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					System.out.println(b.getSelection().toString());
				}
			}
		});
	}
}

Anstatt "hallo", "Du", "da" packst du Objekte rein mit denen Du später was machen willst.
 

Paz1

Mitglied
Hallo, Dankeschön erstmal, es funktionert akutell so, wie ich es mir vorstelle.
Ich habe allerdings erst mal gebraucht, um mich in einiges, für mich Neues, einzulesen (HashMap kannte ich noch gar nicht und den Unterschied zwischen ComboBox und JComboBox (und vergleichbarem) check ich immer noch nicht ganz...)

Habe einiges adaptiert und mein Code sieht jetzt so aus:
(Ist mein Übungsprojekt zum Lernen, ein Schafkopf-Rechner inkl. Stastik)

Java:
buttonNeuesSpiel.setOnAction(new EventHandler<ActionEvent>() {

	@Override
	public void handle(ActionEvent arg0) {
		VBox neuesSpiel = new VBox(10);
		Scene sceneNeuesSpiel = new Scene(neuesSpiel,800,800);
		primaryStage.setScene(sceneNeuesSpiel);
		primaryStage.show();	
					
		Button neuerSpieler = new Button("Neuen Spieler anlegen");
		Button hauptmenü = new Button ("Hauptmenü");
		Label mitspieler = new Label("Wer sitzt am Tisch?");
		Label amTisch = new Label("Es karteln:");
		Tisch tisch = new Tisch();
		StringProperty tisch1name = new SimpleStringProperty("");
		StringProperty tisch2name = new SimpleStringProperty("");
		StringProperty tisch3name = new SimpleStringProperty("");
		StringProperty tisch4name = new SimpleStringProperty("");
		Label tisch1 = new Label(tisch1name.get());
		Label tisch2 = new Label(tisch2name.get());
		Label tisch3 = new Label(tisch3name.get());
		Label tisch4 = new Label(tisch4name.get());
		Label warnung = new Label();
		warnung.setVisible(false);
					
		neuerSpieler.setOnAction(new EventHandler<ActionEvent>(){

			@Override
			public void handle(ActionEvent event) {
				new NeuerSpieler();							
			}						
		});
					
		ArrayList<Spieler> alleSpieler = new ArrayList<Spieler>();
		Spieler spieler1 = new Spieler("Name1");
		Spieler spieler2 = new Spieler("Name2");
		Spieler spieler3 = new Spieler("Name3");
		Spieler spieler4 = new Spieler("Name4");
					
		alleSpieler.add(spieler1);
		alleSpieler.add(spieler2);
		alleSpieler.add(spieler3);
		alleSpieler.add(spieler4);
					
		SpielerAuswahl cb1 = new SpielerAuswahl(alleSpieler);
		cb1.setOnAction(new EventHandler<ActionEvent>() {

			@Override
			public void handle(ActionEvent event) {
				tisch1.setText(cb1.getSelectionModel().getSelectedItem());
				tisch.setSpieler1(cb1.getSelection());
			}						
		});				

		hauptmenü.setOnAction(new EventHandler<ActionEvent>() {

			@Override
			public void handle(ActionEvent event) {
				primaryStage.setScene(sceneStart);
				primaryStage.show();
			}
						
		});		
							
		neuesSpiel.getChildren().addAll(neuerSpieler, mitspieler, cb1, amTisch, tisch1, tisch2, tisch3, tisch4, warnung, hauptmenü);
										
	}
				
});

public class SpielerAuswahl extends ComboBox<String> {

	private HashMap<String, Spieler> map = new HashMap<String, Spieler>();
	
	public SpielerAuswahl(ArrayList<Spieler> spieler) {
		for(Spieler s  : spieler) {
			this.getItems().add(s.getName());
			map.put(s.getName(), s);
		}
	}
	
	public Spieler getSelection() {
		return map.get(this.getSelectionModel().getSelectedItem().toString());
	}

}
 

mrBrown

Super-Moderator
Mitarbeiter
den Unterschied zwischen ComboBox und JComboBox (und vergleichbarem) check ich immer noch nicht ganz...)
Sein Beispiel ist für Swing, und nicht für JavaFX.

generell zu JavaFX: Eine Combobox kann beliebige Objekte als Typ haben, man muss ihr nur sagen, wie das jeweilige Objekt angezeigt werden soll.
Selber mit Maps oder Strings hantieren muss man da nicht.
 

Paz1

Mitglied
Es gibt anscheinend noch eine andere (einfachere?) Möglichkeit, die ComboBox darzustellen!?
Könntet ihr mir auch erklären, wie ich sowas dann anwende? Ich finde weder bei ComboBox noch bei ComboBoxBase eine Möglichkeit, eine eigene Klasse zu verwenden, sodass nicht die Adresse der Klasse sondern ein Attribut der Klasse (in meinem Fall vom Typ String) im Dropdown-Menü angezeigt wird.
 

mrBrown

Super-Moderator
Mitarbeiter
Die ComboBox hat eine Converter-Property, dort musst du nur toString passend überschreiben (fromString kannst du eine exception schmeißen lassen, wenn die ComboBox nicht editierbar sein soll.)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Netbeans mit JavaFX, FXML und Scenebuilder Java Basics - Anfänger-Themen 11
Juelin javaFX mit Elementen Java Basics - Anfänger-Themen 6
Juelin Netbeans und javafx Java Basics - Anfänger-Themen 6
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
A Kapazität JavaFX TextField Java Basics - Anfänger-Themen 4
L JavaFX - grundlegende Verständnisprobleme Java Basics - Anfänger-Themen 1
S JavaFX Java Basics - Anfänger-Themen 1
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
A JavaFX Toggle_Button_Disable Java Basics - Anfänger-Themen 2
ac83 JavaFX - Kompilierungsproblem Java Basics - Anfänger-Themen 1
R Intellij javafx --> jar Java Basics - Anfänger-Themen 11
O Compiler-Fehler JavaFX fmxl LoadExeption Java Basics - Anfänger-Themen 4
M Javafx Timeline Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
A JavaFX-Filechooser Java Basics - Anfänger-Themen 5
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
A JavaFx - SceneBuilder Java Basics - Anfänger-Themen 5
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
G Javafx Eventhandler zu jedem Node Java Basics - Anfänger-Themen 1
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
T HTMLEditor JavaFX Java Basics - Anfänger-Themen 4
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
R Umsetzungsplan JavaFx App Java Basics - Anfänger-Themen 9
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
P JavaFx einrichten Java Basics - Anfänger-Themen 6
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
T Javafx ListView kann nicht gefüllt werden. Java Basics - Anfänger-Themen 6
D JAVAFX WebVIEW zu JSOUP Java Basics - Anfänger-Themen 3
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
S JavaFX-Arduino Kommunikation mit LCD-Anzeige Java Basics - Anfänger-Themen 0
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J javafx mediaplayer mit https Java Basics - Anfänger-Themen 3
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
O JavaFX XML Versuch Java Basics - Anfänger-Themen 2
O JavaFX Java Basics - Anfänger-Themen 7
M JavaFX-Übung Autospiel Java Basics - Anfänger-Themen 4
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
L JavaFx ListView rechts abgeschnitten Java Basics - Anfänger-Themen 0
I Javafx Tabpane Reiter blockieren Java Basics - Anfänger-Themen 1
S JavaFX Beginneraufgabe Java Basics - Anfänger-Themen 1
W JavaFX import Fehler/Zellularautomaten Java Basics - Anfänger-Themen 1
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
CptK mit javafx button erstellen Java Basics - Anfänger-Themen 1
U Javafx Array aus Buttons Java Basics - Anfänger-Themen 2
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
K Erste Schritte JavaFX - wie von "externer" Klasse auf Methoden des Controllers zugreifen Java Basics - Anfänger-Themen 2
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
D JavaFX, Verweis auf Datei im Projekt Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
M JavaFX: Problem mit der TableView Java Basics - Anfänger-Themen 0
P JavaFX ohne FXMLLoader Java Basics - Anfänger-Themen 3
K JavaFX UI controls Java Basics - Anfänger-Themen 1
B Farbverlauf erstellen ohne Javafx, AWT usw.? Java Basics - Anfänger-Themen 34
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
M Ausgabe eines Arrays auf Label (Javafx) Java Basics - Anfänger-Themen 4
K Threads Multithread in JavaFx Java Basics - Anfänger-Themen 11
R Threads in JavaFX Java Basics - Anfänger-Themen 3
N JavaFX - (Controller) - Klasse verkleinern Java Basics - Anfänger-Themen 8
U JavaFX eine Vbox Instanz pro Pane? Java Basics - Anfänger-Themen 2
Spencer Reid JavaDoc zu JavaFx hinzufügen Java Basics - Anfänger-Themen 1
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
D OOP JavaFX objektorientiert Java Basics - Anfänger-Themen 2
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
P JavaFX - Komponenten skalieren Java Basics - Anfänger-Themen 16
P JavaFX Textfelder geben immer null zurück Java Basics - Anfänger-Themen 8
P JavaFX TextArea.setText Java Basics - Anfänger-Themen 13
F javafx.fxml.LoadException: Root hasn't been set. Java Basics - Anfänger-Themen 0
J JavaFX aus Java-Application heraus starten Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S [JavaFX 2.1] - Eigene Sprachauswahl? Java Basics - Anfänger-Themen 4
D Javafx XYChart Variable in Schleife erzeugen? Java Basics - Anfänger-Themen 18
E JavaFX und Java auf Kommandozeile compilen Java Basics - Anfänger-Themen 2
J Webanwendung JavaFX Java Basics - Anfänger-Themen 4
Povlsen84 [javafx] Zusammenarbeit mit Tomcat Java Basics - Anfänger-Themen 4
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 22
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben