sql >> Database teknologi >  >> RDS >> Mysql

Java combobox swing

Dit spørgsmål er noget ufuldstændigt, men mit gæt er, at din JComboBox er fyldt med String. I så fald ville det sandsynligvis være bedre for dig at udfylde JComboBox (eller bedre, dens model) med objekter af en tilpasset klasse, der kombinerer dit produkt-id med et produktnavn. For at få kombinationsboksen til at vise navnet, skal du enten give din klasse en toString()-metode, der returnerer navnet, eller give din kombinationsboks en cellegengiver, der viser navnet.

Rediger
Opret for eksempel en klasse, MyComboItem, giv den to String-felter, som du udfylder fra din database, giv den en toString() metode, der viser produktnavnet, og fyld din JComboBox med elementer af denne 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;
   }
}

Rediger 2

Som kan bruges sådan:

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

   }
}

Rediger 3
I dit tilfælde skal du fylde din model med oplysninger fra ResultSet. Måske noget som:

   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. MySQL fuldtekstsøgning efter hashtags (inklusive #-symbolet i indekset)

  2. Oracle SQL pivotforespørgsel

  3. hvad er forskellen mellem join-nøgleord og indre join-nøgleord i oracle sql?

  4. Migrering fra MSSQL til PostgreSQL - hvad du bør vide