sql >> Databasteknik >  >> RDS >> Mysql

Java combobox swing

Din fråga är något ofullständig, men min gissning är att din JComboBox är fylld med String. I så fall skulle det troligen vara bättre för dig att fylla JComboBox (eller bättre, dess modell) med objekt av en anpassad klass som kombinerar ditt produkt-ID med ett produktnamn. För att få kombinationsrutan att visa namnet måste du antingen ge din klass en toString()-metod som returnerar namnet, eller ge din kombinationsruta en cellrenderare som visar namnet.

Redigera
Skapa till exempel en klass, MyComboItem, ge den två String-fält som du fyller i från din databas, ge den en toString() metod som visar produktnamnet och fyll din JComboBox med objekt av denna typ:

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

Redigera 2

Som kan användas så här:

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

   }
}

Redigera 3
I ditt fall skulle du fylla din modell med information från ResultSet. Kanske något i stil med:

   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. Java - Undantag i trådhuvudet java.lang.Error:Olösta kompileringsproblem

  2. MySQL/SQL hämta de första 40 tecknen i ett textfält?

  3. Index (nollbaserat) måste vara större än eller lika med noll

  4. Använd PostgreSQL SSL-anslutning i rost med självsignerade certifikat