Mysql
 sql >> база данни >  >> RDS >> Mysql

Java combobox swing

Въпросът ви е малко непълен, но предполагам, че вашият JComboBox е попълнен със String. Ако е така, вероятно би било по-добре за вас да попълните JComboBox (или по-добре неговия модел) с обекти от персонализиран клас, който комбинира вашия ProductID с ProductName. За да може комбинираната кутия да показва името, ще трябва или да дадете на класа си метод toString(), който връща името, или да дадете на комбо полето рендер на клетка, което показва името.

Редактиране
Например създайте клас MyComboItem, дайте му две полета String, които попълвате от вашата база данни, дайте му toString() метод, който показва името на продукта, и попълнете вашия JComboBox с елементи от този тип:

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

Редактиране 2

Което може да се използва така:

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

   }
}

Редактиране 3
Във вашия случай бихте попълнили модела си с информация от ResultSet. Може би нещо като:

   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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO срещу нормален mysql_connect

  2. Създател на заявки Laravel - Как да групирате по псевдоним или да направите необработено groupBy

  3. Колко по-бърз е MyISAM в сравнение с InnoDB?

  4. Какъв е най-добрият начин да използвате LEFT OUTER JOIN, за да проверите за несъществуване на свързани редове

  5. Отказано разрешение вътре в /var/www/html при създаване на уебсайт и неговите файлове със сървъра apache2