Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Java-Combobox-Swing

Ihre Frage ist etwas unvollständig, aber ich vermute, dass Ihre JComboBox mit String gefüllt ist. In diesem Fall wäre es wahrscheinlich besser, die JComboBox (oder besser ihr Modell) mit Objekten einer benutzerdefinierten Klasse zu füllen, die Ihre ProductID mit einem ProductName kombiniert. Damit die Combobox den Namen anzeigt, müssen Sie Ihrer Klasse entweder eine toString()-Methode geben, die den Namen zurückgibt, oder Ihrer Combobox einen Cell-Renderer geben, der den Namen anzeigt.

Bearbeiten
Erstellen Sie zum Beispiel eine Klasse, MyComboItem, geben Sie ihr zwei String-Felder, die Sie aus Ihrer Datenbank füllen, geben Sie ihr einen toString() -Methode, die den Produktnamen anzeigt, und füllen Sie Ihre JComboBox mit Elementen dieses Typs:

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

Bearbeiten 2

Was so verwendet werden kann:

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

   }
}

Bearbeiten 3
In Ihrem Fall würden Sie Ihr Modell mit Informationen aus dem Ergebnissatz füllen. Vielleicht so etwas wie:

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