Mysql
 sql >> Base de données >  >> RDS >> Mysql

Balançoire combobox Java

Votre question est quelque peu incomplète, mais je suppose que votre JComboBox est rempli de String. Si tel est le cas, il serait probablement préférable que vous remplissiez le JComboBox (ou mieux, son modèle) avec des objets d'une classe personnalisée qui combine votre ProductID avec un ProductName. Pour que la liste déroulante affiche le nom, vous devrez soit donner à votre classe une méthode toString() qui renvoie le nom, soit donner à votre liste déroulante un rendu de cellule qui affiche le nom.

Modifier
Par exemple, créez une classe, MyComboItem, donnez-lui deux champs String que vous remplissez depuis votre base de données, donnez-lui un toString() méthode qui affiche le nom du produit, et remplissez votre JComboBox avec des éléments de ce 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;
   }
}

Modifier 2

Qui peut être utilisé comme ceci :

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));

   }
}

Modifier 3
Dans votre cas, vous rempliriez votre modèle avec les informations du ResultSet. Peut-être quelque chose comme :

   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);
   }