sql >> Database >  >> RDS >> Mysql

Java combobox schommel

Uw vraag is enigszins onvolledig, maar ik vermoed dat uw JComboBox is gevuld met String. Als dat zo is, is het waarschijnlijk beter voor u om de JComboBox (of beter, het model) te vullen met objecten van een aangepaste klasse die uw ProductID combineert met een ProductName. Om ervoor te zorgen dat de combobox de naam weergeeft, moet u uw klasse een methode toString() geven die de naam retourneert, of uw combobox een celrenderer geven die de naam laat zien.

Bewerken
Maak bijvoorbeeld een klasse, MyComboItem, geef deze twee String-velden die u invult vanuit uw database, geef deze een toString() methode die de productnaam toont, en vul uw JComboBox met items van dit type:

class MyComboItem {
   private String productId;
   private String productName;

   public MyComboItem(String productId, String productName) {
      this.productId = productId;
      this.productName = productName;
   }

   public String getProductId() {
      return productId;
   }

   public String getProductName() {
      return productName;
   }

   @Override
   public String toString() {
      return productName;
   }
}

Bewerk 2

Die zo kan worden gebruikt:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

public class ComboItemTest {
   public static void main(String[] args) {
      DefaultComboBoxModel<MyComboItem> comboModel = 
              new DefaultComboBoxModel<MyComboItem>();

      // note that here you would fill the model with data from your database ***
      comboModel.addElement(new MyComboItem("x1234A", "Product 1"));
      comboModel.addElement(new MyComboItem("x1235A", "Product 2"));
      comboModel.addElement(new MyComboItem("x1236A", "Product 3"));
      comboModel.addElement(new MyComboItem("x1237A", "Product 4"));
      comboModel.addElement(new MyComboItem("x1238A", "Product 5"));
      comboModel.addElement(new MyComboItem("x1239A", "Product 6"));

      final JComboBox<MyComboItem> combobox = new JComboBox<MyComboItem>(comboModel);

      combobox.addActionListener(new ActionListener() {

         @Override
         public void actionPerformed(ActionEvent e) {
            MyComboItem item = (MyComboItem) combobox.getSelectedItem();
            if (item != null) {
               System.out.printf("You've selected Product Name: %s, Product ID: %s%n", 
                     item.getProductName(), item.getProductId());
            }
         }
      });

      JOptionPane.showMessageDialog(null, new JScrollPane(combobox));

   }
}

Bewerk 3
In jouw geval zou je je model vullen met informatie uit de ResultSet. Misschien zoiets als:

   ResultSet result = statement.executeQuery();

   while(result.next()){
       String productName = result.getString(1);
       String productId = result.getString(2); // ???? not sure if this is valid
       MyComboItem comboItem = new MyComboItem(productId, productName);
       comboModel.addElement(comboItem);
   }



  1. LIMIET 10..20 in SQL Server

  2. MariaDB ROWNUM() uitgelegd

  3. Databasebeheer en -bewaking voor PostgreSQL 12

  4. Problemen met het instellen van MySQLdb-module