Заполнение комбинированного списка из базы данных с использованием спящего режима в Java - PullRequest
1 голос
/ 28 марта 2010

Heyy;

Я занимаюсь разработкой небольшого свинг-приложения с hibernate в java. И я хочу заполнить поле со списком. Как я могу это сделать?

И я не знаю, где (под initComponents, buttonActionPerformd) мне нужно делать.

Для сохранения я использую jbutton, а его код здесь:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

 int idd=Integer.parseInt(jTextField1.getText());

 String name=jTextField2.getText();

 String description=jTextField3.getText();

 Session session = null;

 SessionFactory sessionFactory = new Configuration().configure()
    .buildSessionFactory();

 session = sessionFactory.openSession();

 Transaction transaction = session.getTransaction();

   try {


       ContactGroup con = new ContactGroup();

       con.setId(idd);

       con.setGroupName(name);
       con.setGroupDescription(description);



       transaction.begin(); 
       session.save(con); 
       transaction.commit(); 


      } catch (Exception e) {
       e.printStackTrace();
      }

      finally{
       session.close(); 
      }    
}

1 Ответ

5 голосов
/ 28 марта 2010

Я не использую Hibernate, но, учитывая сущность JPA с именем Customer и контроллер JPA с именем CustomerJpaController, вы можете сделать что-то подобное.

Обновление: код обновлен, чтобы отразить переход на EclipseLink (JPA 2.1) в качестве постоянной библиотеки.

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

Объекты, добавленные к JComboBox, получают свое отображаемое имя из метода toString() объекта, поэтому Customer был изменен для возврата getName() для целей отображения:

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

Подробнее о JComboBox можно прочитать в статье Как использовать комбинированные поля .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...