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.