sql >> Databáze >  >> RDS >> Mysql

Java combobox houpačka

Vaše otázka je poněkud neúplná, ale odhaduji, že váš JComboBox je naplněn řetězcem String. Pokud ano, pravděpodobně by pro vás bylo lepší naplnit JComboBox (nebo lépe jeho model) objekty vlastní třídy, která kombinuje vaše ProductID s ProductName. Chcete-li, aby pole se seznamem zobrazovalo název, budete muset své třídě přidělit metodu toString(), která název vrátí, nebo svému poli se seznamem přidělit vykreslovací modul buněk, který zobrazuje název.

Upravit
Například vytvořte třídu MyComboItem, dejte jí dvě pole String, která vyplníte z databáze, dejte jí toString() metoda, která zobrazuje název produktu, a naplňte svůj JComboBox položkami tohoto typu:

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

Úprava 2

Což lze použít takto:

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

   }
}

Úprava 3
Ve vašem případě byste svůj model naplnili informacemi z ResultSet. Možná něco jako:

   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. Ukládání konkrétních hodnot data/času pro uživatele v různých časových pásmech

  2. Jaký je rozdíl mezi BIT a TINYINT v MySQL?

  3. Úvod do databáze vysoké dostupnosti pro MySQL a MariaDB

  4. Vzdálená připojení Mysql Ubuntu