Combobox in Abhängigkeit von Spinner

Chris87

Mitglied
Hallo,

ich habe folgendes Problem: Ich habe ein GUI für ein Navigationsprogramm innerhalb eines Gebäudes geschrieben. Die Navigation erfolgt anhand der Eingabe von Start/Ziel-Raum und Start/Ziel-Etage in JSpinner. Ich möchte nun jedoch zusätzliche Informationen in Form einer Combox darstellen, die sich je nach Eingabe der Spinner ändern z.B. wählt man als Start: Raum 10, Etage 2 und die Combobox zeigt direkt "Büro" an. Also einen Listener.
Bin da aber echt ratlos zur Zeit. Vielleicht kennt jemand eine gute Quelle wo sowas step by step erklärt wird.

Danke schonmal

Grüße Christian
 

HoaX

Top Contributor
Wenn du dein Problem konkretisierst kann man bestimmt weiterhelfen. Hast du denn schon den Listener? Wo liegt das Problem?
 

Chris87

Mitglied
Achso Entschuldigung:) Also die grafische Oberfläche steht soweit, möchte nurnoch als Zusatzfunktion die Combobox einfügen, die auf die Spinnereingabe reagiert.
 

eRaaaa

Top Contributor
Das kann man so aber schlecht sagen, weil wir dein Model nicht kennen.
Denkbar wäre z.B. so etwas grob wie
Java:
			public void stateChanged(ChangeEvent e) {
				int etageValue = (Integer) etage.getValue();
				int raumValue = (Integer) raum.getValue();
				for (Location location : model) {
					if(location.getRaum() == raumValue && location.getEtage() == etageValue){
						bezeichnung.setSelectedItem(location); //bezeichnung = combobox
						break;
					}
				}
			}

D.h. wenn sich einer der Spinner ändert (gleiche Listener an beide) durchläufst du deine Objekte/Model und prüfst ob eines der Objekte der Etagen und Raumzahl passt und selektierst diese in der Combobox. Gibt aber sicherlich noch viele andere Möglichkeit und es kommt eben auf deinen bisherigen Code an.

Aber hier mal ein Beispiel:
Java:
import java.awt.Component;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.ListCellRenderer;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class App {

	public static void main(String[] args) throws Exception {

		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		final Location[] model = new Location[]{new Location(1, 1, "Abstellkammer"), new Location(2, 10, "Büro")}; //usw...
		
		
		JLabel etageLbl = new JLabel("Etage");
		final JSpinner etage = new JSpinner(new SpinnerNumberModel(0, 0, 3, 1));
		etage.setEditor(new JSpinner.NumberEditor(etage, "00"));
		JLabel raumLbl = new JLabel("Raum");
		final JSpinner raum = new JSpinner(new SpinnerNumberModel(0, 0, 10, 1));
		raum.setEditor(new JSpinner.NumberEditor(raum, "00"));
		
		final JComboBox bezeichnung = new JComboBox(model);
		bezeichnung.setRenderer(new ListCellRenderer() {
			JLabel label = new JLabel();
			@Override
			public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
				Location loc = (Location) value;
				label.setText(loc.getBezeichnung());
				return label;
			}
		});
		
		ChangeListener listener = new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				int etageValue = (Integer) etage.getValue();
				int raumValue = (Integer) raum.getValue();
				for (Location location : model) {
					if(location.getRaum() == raumValue && location.getEtage() == etageValue){
						bezeichnung.setSelectedItem(location);
						break;
					}
				}
			}
		};
		
		etage.addChangeListener(listener);
		raum.addChangeListener(listener);
		etageLbl.setLabelFor(etage);
		raumLbl.setLabelFor(raum);
		panel.add(etageLbl);
		panel.add(etage);
		panel.add(raumLbl);
		panel.add(raum);
		panel.add(bezeichnung);
		frame.add(panel);

		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

}
class Location{
	private int etage, raum;
	private String bezeichnung;
	
	public Location(int etage, int raum, String bezeichnung) {
		this.etage = etage;
		this.raum = raum;
		this.bezeichnung = bezeichnung;
	}
	
	public int getEtage() {
		return etage;
	}
	
	public void setEtage(int etage) {
		this.etage = etage;
	}
	
	public int getRaum() {
		return raum;
	}
	
	public void setRaum(int raum) {
		this.raum = raum;
	}
	
	public String getBezeichnung() {
		return bezeichnung;
	}

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

Chris87

Mitglied
Schonmal danke für die Mühe Basti, das hilft mir schon ein wenig weiter. Trotzdem hier mal mein Code
Java:
import javax.swing.*;
import inf.v3d.obj.*;
import inf.v3d.view.ViewerPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import inf.vtk.uiswing.*;
import javax.swing.border.*;

public class GrafischeOberflaeche extends JFrame implements ActionListener {

//Attribute   
    // Spinner für Start- und Zieleingabe
    private JSpinner sraumSpinner = new JSpinner(new SpinnerNumberModel(1.0,
            1.0, 180.0, 1.0));
    // Startraum
    private JSpinner setageSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 3.0, 1.0));
    // Startetage
    private JSpinner zraumSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 180.0, 1.0));
    // Zielraum
    private JSpinner zetageSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 3.0, 1.0));
    // Zieletage
    private JButton buttonNavigieren = new JButton("Navigation starten");
    // großes Panel für 3D-Navigation
    private ViewerPanel viewerpanel = new ViewerPanel();
    // Testlabels für den Weg (müssen ersetzt werden)!!!
    private JLabel l1 = new JLabel();
    private JLabel l2 = new JLabel();
    private JLabel l3 = new JLabel();

// Konstruktor
    public GrafischeOberflaeche() {
        Object3D.setAutoRegister(true);
        JPanel grundPanel = new JPanel(new BorderLayout());
        JPanel linkerSeitenrand = new JPanel(new BorderLayout());
        JPanel wegFeldRahmen = new JPanel(new BorderLayout());
        JPanel wegFeldPanel = new JPanel(new BorderLayout());
        JPanel viewerPanel = new JPanel(new BorderLayout());
        JPanel rahmenAußen = new JPanel(new BorderLayout());
        JPanel rahmenInnen = new JPanel(new BorderLayout());
        JPanel start = new JPanel(new GridLayout(4, 2));
        JPanel ziel = new JPanel(new GridLayout(4, 2));

        // Testlabels
        wegFeldRahmen.setBorder(new TitledBorder("Weg"));
        wegFeldPanel.add(l1);
        wegFeldPanel.add(l2);
        wegFeldPanel.add(l3);

        // Hinzufügen der Toolbar
        JToolBar toolbar = new JToolBar();
        toolbar.add(new VTKViewControlToolbar(viewerpanel.getCanvas()));
        toolbar.add(new VTKViewPointToolbar(viewerpanel.getCanvas()));

        // Anordnung der Starteingabe
        start.setBorder(new TitledBorder("Startkoordinaten"));
        start.add(new JLabel("Startraum:"));
        start.add(sraumSpinner);
        start.add(new JLabel("Startetage:"));
        start.add(setageSpinner);

        // Anordnung der Zieleingabe
        ziel.setBorder(new TitledBorder("Zielkoordienaten"));
        ziel.add(new JLabel("Zielraum:"));
        ziel.add(zraumSpinner);
        ziel.add(new JLabel("Zieletage:"));
        ziel.add(zetageSpinner);

        setSize(900, 600); 
        setTitle("Navigation");
        setLocation(0, 0);

        // Layout der einzelnen Felder
        add(grundPanel, BorderLayout.CENTER);
        grundPanel.add(viewerPanel, BorderLayout.CENTER);
        viewerPanel.add(toolbar, BorderLayout.NORTH);
        viewerPanel.add(viewerpanel, BorderLayout.CENTER);
        grundPanel.add(linkerSeitenrand, BorderLayout.WEST);
        linkerSeitenrand.add(rahmenAußen, BorderLayout.NORTH);
        linkerSeitenrand.add(wegFeldRahmen, BorderLayout.CENTER);
        wegFeldRahmen.add(wegFeldPanel, BorderLayout.CENTER);
        rahmenAußen.add(rahmenInnen, BorderLayout.CENTER);

        buttonNavigieren.setBorder(new EtchedBorder(EtchedBorder.RAISED));
        buttonNavigieren.setBackground(new Color(200, 200, 100));
        buttonNavigieren.addActionListener(this);
        rahmenAußen.add(buttonNavigieren, BorderLayout.SOUTH);
        rahmenInnen.add(start, BorderLayout.NORTH);// evtl. Anpassen
        rahmenInnen.add(ziel, BorderLayout.SOUTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == buttonNavigieren) {
            // Anweisungen fehlen noch!!!
        }
    }
    public static void main(String[] args) {
        new GrafischeOberflaeche();
    }

}
 
Zuletzt bearbeitet von einem Moderator:

Chris87

Mitglied
Ich habe jetzt den ganzen Mittag rumprobiert und bekomme das soweit hin. Ich denke aber ich werds doch anders umsetzen und zwar ohne Combobox.
Anhand der Spinnereingabe sollen die weiteren Raumdaten aus der Datenbank geholt werden und in dem Ausgabefeld unten rechts einfach angezeigt werden. Sind immerhin 150 Räume mal drei Etagen. Was haltet ihr von der Alternative?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J Array an Combobox übergeben Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
H Combobox abhängig von RadioButton Java Basics - Anfänger-Themen 4
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
J Interface Combobox Zustand speichern Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
J Combobox Objekte Java Basics - Anfänger-Themen 10
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
W Hilfe bei Combobox Java Basics - Anfänger-Themen 9
W GUI Label, ComboBox Java Basics - Anfänger-Themen 4
D Wert von Combobox in Datei schreiben Java Basics - Anfänger-Themen 2
J Combobox in andere Klasse übergeben Java Basics - Anfänger-Themen 3
B ComboBox(editable) - Text verändern Java Basics - Anfänger-Themen 7
H String aus Combobox auslesen Java Basics - Anfänger-Themen 2
I ComboBox mit Icons + Mehr...! Java Basics - Anfänger-Themen 6
1 Combobox anzeige Java Basics - Anfänger-Themen 7
1 combobox nicht an fesnter angeknüpft Java Basics - Anfänger-Themen 2
1 ComboBox Java Basics - Anfänger-Themen 4
S ComboBox Spielautomat Java Basics - Anfänger-Themen 3
F ComboBox sowie String in einer JTable Spalte Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
M Combobox Problem Java Basics - Anfänger-Themen 3
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
Spin ComboBox Java Basics - Anfänger-Themen 4
J Taschenrechner Combobox Reaktion auf Auswahl Java Basics - Anfänger-Themen 2
M ComboBox und ActionListener Java Basics - Anfänger-Themen 3
S AWT ComboBox Ausgaba Java Basics - Anfänger-Themen 5
K rückgabewert combobox Java Basics - Anfänger-Themen 15
E ComboBox werte auslesen Java Basics - Anfänger-Themen 4
E Combobox Auswahl überprüfen Java Basics - Anfänger-Themen 7
B ComboBox Größe ändern Java Basics - Anfänger-Themen 4
D ComboBox Java Basics - Anfänger-Themen 10
N nicht editierbare combobox davon oberstes element auslesen? Java Basics - Anfänger-Themen 5
H combobox auf leeres Feld prüfen? Java Basics - Anfänger-Themen 10
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
D ComboBox auf <empty> überprüfen Java Basics - Anfänger-Themen 2
P Item in ComboBox manuell hinzufügen? Java Basics - Anfänger-Themen 3
C Welche Elemente sind in der ComboBox? Java Basics - Anfänger-Themen 3
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
D Combobox mit array abhängig von anderer Combobox mit array Java Basics - Anfänger-Themen 4
R Symbolschrift in einer ComboBox! Java Basics - Anfänger-Themen 10
G itemlistener bei combobox? Java Basics - Anfänger-Themen 10
G ComboBox und Arrays Inhalt speichern/ausgeben Java Basics - Anfänger-Themen 7
G ComboBox mit identischen einträgen Java Basics - Anfänger-Themen 2
G ComboBox in eine JTable einbinden Java Basics - Anfänger-Themen 2
A Combobox Struts Java Java Basics - Anfänger-Themen 7
S Größe einer Combobox Java Basics - Anfänger-Themen 5
S Combobox mehrfach verwenden Java Basics - Anfänger-Themen 3
A ComboBox mit unique Werten Java Basics - Anfänger-Themen 2
T ComboBox.GetSelectedIndex() gibt immer nur 0 zurück. Java Basics - Anfänger-Themen 2
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
S Combobox mit Icons Java Basics - Anfänger-Themen 3
D wieso ist die combobox nicht von anfang an aktiviert? Java Basics - Anfänger-Themen 4
L Aktual.problem einer Var. wenn ComboBox Element ausgewählt Java Basics - Anfänger-Themen 4
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
A Combobox füllen Java Basics - Anfänger-Themen 4
C Combobox mit "History" Java Basics - Anfänger-Themen 3
W Mehrfacheinträge in ComboBox Java Basics - Anfänger-Themen 8
M String Array in ComboBox toString() Java Basics - Anfänger-Themen 2
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
N UML Dependency/Abhängigkeit von SetterMethoden Java Basics - Anfänger-Themen 1
H Führende Nullen in Abhängigkeit von der Stellenanzahl einer Konstante Java Basics - Anfänger-Themen 4
M CellReender Zellenfarbe int abhängigkeit einer anderen Zelle Java Basics - Anfänger-Themen 13
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
D Sortieren in Abhängigkeit von einer anderen Sortierung Java Basics - Anfänger-Themen 14
G Variablen in Abhängigkeit vom Betriebssystem festlegen Java Basics - Anfänger-Themen 6
W Abhängigkeit 3er Variablen Java Basics - Anfänger-Themen 6
H Aktualisierung des JProgressBar in Abhängigkeit eines Threads Java Basics - Anfänger-Themen 5
G 2. JComboBox in Abhängigkeit der 1. JCombobox füllen Java Basics - Anfänger-Themen 2
B Klassen beerben, die in Abhängigkeit zueinander stehen Java Basics - Anfänger-Themen 2
N Abhängigkeit zu anderen Jar Dateien Java Basics - Anfänger-Themen 2
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
B Variablen Android: Spinner-Eintrag einen versteckten numerischen Wert zuordnen und Variable übergeben Java Basics - Anfänger-Themen 3
B spinner ausrichten Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben