2 Combobox in Abhängigkeit von der 1 Combobox (Datenbank)

Oli_FFM

Mitglied
Hallo erstmal,
nach langen suchen weiß ich leider nicht mehr so ganz weiter ???:L
Hier meine Situation:
Ich will eine Kühlschranksteuerung erstellen und bei dieser greife ich auf eine Datenbank (MySQL) zu.
Habe 2 Comboboxen die einander abhängige Werte liefern sollen.
Als Beispiel Combobox 1 kann man auswählen Fleisch, Obst, Gemüse und in der Combobox 2 sollen die ermittelten Detailwerte aus der Combobox auswählbar sein
Als Beispiel Box 1 Obst --- Box 2 Apfel, Banane , Orange etc

Mein Problem ist ich habe keine Ahnung wie ich die zweite Combobox in Abhängigkeit setze :bahnhof:
Vielleicht hatte eine/r das selbe Problem und zufällig eine Lösung für mich parat.

Hier noch der Java Code:

Java:
public class Lebensmittel extends JFrame implements ActionListener {

	/**
	 * @param Instanzvariablen
	 *            werden erzeugt
	 */

	private JPanel jpnlWest;
	private JPanel jpnlWestCenter;
	private JPanel jpnlSouth = new JPanel();
	private JPanel jpnlButton = new JPanel();
	
	private JLabel jlblUeberschrift;
	private JLabel jlblkategorie;
	private JLabel jlblauswahl;

	private JTable jtabTabelle;
	
	
	private ImageIcon img1 = new ImageIcon(
			Lebensmittel.class.getResource("eintragen.png"));
	private JButton jbtEintragen = new JButton("Eintragen", img1);
	private ImageIcon img2 = new ImageIcon(
			Lebensmittel.class.getResource("müll.png"));
	private JButton jbtAustragen = new JButton("Austragen", img2);
	private JButton jbtScannen;
	private ImageIcon img3 = new ImageIcon(
			Lebensmittel.class.getResource("Home.png"));
	private JButton jbtBeenden = new JButton(img3);

	private Container cp;

	private JScrollPane jsplebensmittel;
	
	private JComboBox jcomboKat;
	private JComboBox jcomboasw;
	
	private String url = "jdbc:mysql://localhost:3306/fmanager";
	private String username = "root";
	private String password = "";
	private Connection connection;
	private String query1 = "SELECT * FROM Zutaten";
	private ResultSet rs;
	private PreparedStatement pst;
	
	private Zutaten zutaten;

	private Model model;

	/**
	 * Erzeugt ein Fenster mit dem spezifizierten Titel.
	 * 
	 * 
	 * @param title
	 *            Titel des Fensters
	 * 
	 */
	public Lebensmittel(String title) {
		super(title);
		setSize(1250, 650);
		setUndecorated(true);

		cp = getContentPane();
		cp.setLayout(new BorderLayout());

		jpnlWest = new JPanel();
		jpnlWestCenter = new JPanel();
		

		erstellenWidgets();
		setzenLayoutManager();
		hinzufuegenWidgets();
		sqlAusfuehrenAbfrage();
		ActionListener();
		comboBoxKategorie();
		comboBoxAuswahl();
		

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		setLocationRelativeTo(null);

	}

	/**
	 * 
	 * Erstellt die Widgets fuer die GUI
	 * 
	 */

	private void erstellenWidgets() {
		jlblUeberschrift = new JLabel("Kühlschrankinhalt");
		jlblUeberschrift.setFont(new Font("Arial", Font.PLAIN, 30));
		jlblUeberschrift.setHorizontalAlignment(SwingConstants.CENTER);
		jlblUeberschrift.setBackground(Color.BLACK);
		jlblUeberschrift.setForeground(Color.WHITE);
		jlblUeberschrift.setOpaque(true);
		jlblUeberschrift.setPreferredSize(new Dimension(250, 30));
		
		jlblkategorie = new JLabel("Kategorie");
		jlblkategorie.setFont(new Font("Arial", Font.PLAIN, 20));
		
		jlblauswahl = new JLabel("Lebensmittel");
		jlblauswahl.setFont(new Font("Arial", Font.PLAIN, 20));


		model = new Model();

		jtabTabelle = new JTable(model);
		jtabTabelle.setAutoCreateRowSorter(true);
		jtabTabelle.setRowHeight(60); 
		jtabTabelle.setFont(new Font("Arial", Font.PLAIN, 30));
		

		jsplebensmittel = new JScrollPane(jtabTabelle);
		jsplebensmittel.getVerticalScrollBar().setPreferredSize(new Dimension(50, 0));  //Dicke der ScrollBar ändern
		
		
		jcomboKat = new JComboBox();
		jcomboKat.setFont(new Font("Calibri", Font.BOLD + Font.ITALIC, 24));
		jcomboKat.setPreferredSize(new Dimension(210, 30));
	
		
		jcomboasw = new JComboBox();
		jcomboasw.setFont(new Font("Calibri", Font.BOLD + Font.ITALIC, 24));
		jcomboasw.setPreferredSize(new Dimension(210, 30));
		



		// jbtEintragen = new JButton("Eintragen");
		jbtEintragen.setPreferredSize(new Dimension(210, 60));
		jbtEintragen.setFont(new Font("Arial", Font.BOLD, 14));

		// jbtAustragen = new JButton("Austragen");
		jbtAustragen.setPreferredSize(new Dimension(210, 60));
		jbtAustragen.setFont(new Font("Arial", Font.BOLD, 14));

		jbtScannen = new JButton("Eintragen");
		jbtScannen.setPreferredSize(new Dimension(210, 50));
		jbtScannen.setFont(new Font("Arial", Font.BOLD, 14));

		jbtBeenden.setPreferredSize(new Dimension(105, 70));
		jbtBeenden.setFont(new Font("Arial", Font.BOLD, 14));
	}
	
	private void comboBoxKategorie() {

		try {
			String query = "SELECT * FROM lgruppe";

			pst = (PreparedStatement) connection.prepareStatement(query);

			rs = pst.executeQuery();

			while (rs.next()) {

				jcomboKat.addItem(rs.getString("LName"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		}
	
	private void comboBoxAuswahl() {

		try {
			String query = "SELECT * FROM zutaten";

			pst = (PreparedStatement) connection.prepareStatement(query);

			rs = pst.executeQuery();

			while (rs.next()) {

				jcomboasw.addItem(rs.getString("Name"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		}
	

	/**
	 * 
	 * Methode fuer die Erstellung des Layouts fuer die GUI
	 * 
	 */

	private void setzenLayoutManager() {
		cp.setLayout(new BorderLayout());

		jpnlWest.setLayout(new BorderLayout());
		jpnlWest.setPreferredSize(new Dimension(210, 200));
		jpnlButton.setLayout(new FlowLayout());
		jpnlButton.setPreferredSize(new Dimension(210, 130));

		jpnlWestCenter.setLayout(new FlowLayout());
		jpnlWestCenter.setPreferredSize(new Dimension(210, 200));

	}

	/**
	 * 
	 * Methode zum hinzufuegen der Widgets auf das Layout
	 * 
	 */
	private void hinzufuegenWidgets() {
		cp.add(BorderLayout.NORTH, jlblUeberschrift);
		cp.add(BorderLayout.CENTER, jsplebensmittel);
		cp.add(BorderLayout.WEST, jpnlWest);
		cp.add(BorderLayout.SOUTH, jpnlSouth);
		jpnlWestCenter.add(jlblkategorie);
		jpnlWestCenter.add(jcomboKat);
		jpnlWestCenter.add(jlblauswahl);
		jpnlWestCenter.add(jcomboasw);
		jpnlWest.add(BorderLayout.SOUTH, jpnlButton);
		jpnlButton.add(jbtEintragen);
		jpnlButton.add(jbtAustragen);

		jpnlWest.add(BorderLayout.NORTH, jpnlWestCenter);

		jpnlSouth.add(jbtBeenden);

	}

 private void sqlAusfuehrenAbfrage() {

 zutaten = null;

 connection = MySQL.dbConnect(url, username, password);

 rs = MySQL.returnQuery(connection, query1);

 try {
 while (rs.next()) {
 zutaten = new Zutaten(rs.getString(2));
 model.addZutaten(zutaten);

 }
 } catch (SQLException e) {
 e.printStackTrace();
 }

 }

	public void ActionListener() {

		jcomboKat.addActionListener(this);
		jcomboasw.addActionListener(this);
		jbtEintragen.addActionListener(this);
		jbtBeenden.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();

		if (obj == jcomboKat) {
			textfuellen();
		}
		
		if (obj == jcomboasw) {
			textfuellen2();
		}
		// Home Befehl wenn Home Button betätigt wird
		if (obj == jbtBeenden) {
			dispose();
		}
	}


public void textfuellen() {

	try {
		String query = "SELECT * FROM lgruppe";
		pst = (PreparedStatement) connection.prepareStatement(query);
		pst.setString(1, (String) jcomboKat.getSelectedItem());
		rs = pst.executeQuery();

		while (rs.next()) {

		}
		pst.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

	public void textfuellen2() {

		try {
			String query = "SELECT * FROM Zutaten";
			pst = (PreparedStatement) connection.prepareStatement(query);
			pst.setString(1, (String) jcomboasw.getSelectedItem());
			rs = pst.executeQuery();

			while (rs.next()) {

			}
			pst.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

Danke schonmal für eure Hilfe :D
 

Ruzmanz

Top Contributor
Habe mir den Code nicht durchgelesen. Wenn Combo2 von Combo1 abhängig ist, dann musst du einen ChangeListener in Combo1 implementieren. Sobald sich ein Wert in Combo1 ändert, wird der Wert in Combo2 zurückgesetzt / gelöscht / etc.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
S Array in Combobox ausnutzen??? Allgemeine Java-Themen 5
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
O MVC - wo Liste der ComboBox-Items ermitteln Allgemeine Java-Themen 3
A Java Verzeichnisse in Combobox Ausgeben JAVA Allgemeine Java-Themen 3
S ComboBox nimmt nur ein Item an Allgemeine Java-Themen 3
L List <Hauser> in Combobox einfügen Allgemeine Java-Themen 5
G ComboBox: Nur eine Art Klasse zulassen (Generics) Allgemeine Java-Themen 3
S Combobox --> liefer null? Allgemeine Java-Themen 3
G Combobox mit Zeitwerten Allgemeine Java-Themen 10
MQue Datum in ComboBox setzen Allgemeine Java-Themen 9
B ComboBox Allgemeine Java-Themen 4
D ComboBox definieren Allgemeine Java-Themen 2
L ComboBox -> SQL -> ArrayList -> JTable? Allgemeine Java-Themen 28
C Erste Schritte Variablen in abhängigkeit von Git branch Allgemeine Java-Themen 7
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
L Wie ist folgende Abhängigkeit in UML2 zu formulieren. Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben