Filling combobox from database by using hibernate in Java

I don’t use Hibernate, but given a JPA entity named Customer and a JPA controller named CustomerJpaController, you can do something like this.

Update: Code updated to reflect a switch to EclipseLink (JPA 2.1) as the persistence library.

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JFrame;

/**
* @see http://stackoverflow.com/a/2531942/230513
*/
public class CustomerTest implements Runnable {

    public static void main(String[] args) {
        EventQueue.invokeLater(new CustomerTest());
    }

    @Override
    public void run() {
        CustomerJpaController con = new CustomerJpaController(
            Persistence.createEntityManagerFactory("CustomerPU"));
        List<Customer> list = con.findCustomerEntities();
        JComboBox combo = new JComboBox(list.toArray());
        combo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox cb = (JComboBox) e.getSource();
                Customer c = (Customer) cb.getSelectedItem();
                System.out.println(c.getId() + " " + c.getName());
            }
        });
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(combo);
        f.pack();
        f.setVisible(true);
    }
}

Objects added to a JComboBox get their display name from the object’s toString() method, so Customer was modified to return getName() for display purposes:

@Override
public String toString() {
    return getName();
}

You can learn more about JComboBox in the article How to Use Combo Boxes.

Leave a Comment