Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Huśtawka combobox Java

Twoje pytanie jest nieco niekompletne, ale domyślam się, że Twój JComboBox jest wypełniony ciągiem. Jeśli tak, prawdopodobnie lepiej byłoby wypełnić JComboBox (lub lepiej jego model) obiektami niestandardowej klasy, która łączy Twój ProductID z ProductName. Aby pole kombi wyświetlało nazwę, musisz albo nadać swojej klasie metodę toString(), która zwraca nazwę, albo nadać polu kombi mechanizm renderujący komórki, który pokazuje nazwę.

Edytuj
Na przykład utwórz klasę MyComboItem, daj jej dwa pola String, które wypełnisz z bazy danych, nadaj jej toString() metoda, która pokazuje nazwę produktu i wypełnij JComboBox elementami tego 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;
   }
}

Edytuj 2

Którego można użyć w ten sposób:

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

   }
}

Edytuj 3
W Twoim przypadku wypełniłbyś swój model informacjami z zestawu wyników. Może coś takiego:

   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. MySQL:liczba rekordów z kolejnymi miesiącami

  2. Jak poprawić podwójnie zakodowane ciągi znaków UTF-8 znajdujące się w polach MySQL utf8_general_ci?

  3. Jak ustawić domyślny pager dla klienta MySQL?

  4. MySql Count nie może pokazać wartości 0

  5. Analizator zapytań MySql - darmowe rozwiązania