2014-05-15 3 views
0

나는 내 테이블에 학기 테이블과 코스 테이블로 두 개의 테이블을 가지고 있습니다. 학기 테이블에 semesterId, courseId, courseName 및 Sdepartment (부서 이름)이 있습니다. 코스 테이블에는 courseId와 courseName이 있습니다. 두 개의 콤보 박스가 있습니다. 첫 번째는 선택된 부서를위한 것이고 두 번째는 선택 과정입니다. 선택한 학과목을 선택하고 싶습니다. 부서를 선택할 때 어떻게 콤보 박스에서 코스 이름을 부를 수 있습니까? 여기 내 코드;java에서 combobox 사이에 필터를 사용하려면 어떻게해야합니까?

 public void coursename(){ 
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 
    //Query query= session.createQuery("select a.courseName,e.semesterId from Semester e inner join e.course as a"); 
    Query query= session.createQuery("FROM Senior.entity.Semester S "); 
    //for (Iterator it = query.iterate(); it.hasNext();) { 
     //Object row[] = (Object[]) it.next(); 
     //combocourse.addItem(new CourseItem((String)row[0], (int)row[1])); 
     //} 
    List <Semester>re= query.list(); 
    if (re.size() > 0){ 
    Iterator iterate= re.iterator(); 
    final Semester resultAccount= (Semester)iterate.next(); 
    combocourse.removeAllItems(); 
    for(Semester inv:re){ 
    combocourse.addItem(new CourseItem(inv.getSemesterId(),inv.getSCourse())); 
    }   
    } 
     session.close(); 
    } 


     public void depart(){ 
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 

    Query query= session.createQuery("FROM Senior.entity.Semester f "); 
    List <Semester>results= query.list(); 
    if (results.size() > 0){ 
    Iterator iterate= results.iterator(); 
    final Semester resultAccount= (Semester)iterate.next(); 
    combodepart.removeAllItems(); 
    for(Semester inv:results){ 
    combodepart.addItem(new DepartItem(inv.getSemesterId(),inv.getSDepartment())); 

     // combodepart.addActionListener(combocourse); 
       /* 
      @Override 
     public void actionPerformed(ActionEvent e) { 
       JComboBox combocourse; 
      combocourse = (JComboBox) e.getSource(); 
     //  Object selected = combocourse.getSelectedItem(); 
      Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 

    Query query= session.createQuery("FROM Senior.entity.Semester f "); 
    List <Semester>results= query.list(); 
    if (results.size() > 0){ 
    Iterator iterate= results.iterator(); 
    final Semester resultAccount= (Semester)iterate.next(); 
    combodepart.removeAllItems(); 
    for(Semester inv:results){ 
    combodepart.addItem(new DepartItem(inv.getSemesterId(),inv.getSDepartment())); 
     } 
    }); 

    */ 

    }   
    } 
    session.close(); 
    } 
+0

더 명확한 질문을하고 더 나은 문법을 사용하십시오. 이해하기 어렵습니다. – ManyQuestions

+0

부서를 선택할 때 어떻게 코스 이름을 불러올 수 있습니까? addActionListener와 actionperformed를 사용해야한다고 생각하지만이 코드를 어떻게 사용하는지 알지 못합니다. – user3624017

답변

0

단 하나의 방법은 부서 콤보 상자에서 항목을 선택할 때마다 코스 콤보 상자의 모델을 다시 설정하는 것입니다. 같은

뭔가 :

import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 

public class ComboBoxTwo extends JPanel implements ActionListener 
{ 
    private JComboBox<String> mainComboBox; 
    private JComboBox<String> subComboBox; 
    private Hashtable<String, String[]> subItems = new Hashtable<String, String[]>(); 

    public ComboBoxTwo() 
    { 
     String[] items = { "Select Item", "Color", "Shape", "Fruit" }; 
     mainComboBox = new JComboBox<String>(items); 
     mainComboBox.addActionListener(this); 

     // prevent action events from being fired when the up/down arrow keys are used 
     mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); 
     add(mainComboBox); 

     // Create sub combo box with multiple models 

     subComboBox = new JComboBox<String>(); 
     subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // JDK1.4 
     add(subComboBox); 

     String[] subItems1 = { "Select Color", "Red", "Blue", "Green" }; 
     subItems.put(items[1], subItems1); 

     String[] subItems2 = { "Select Shape", "Circle", "Square", "Triangle" }; 
     subItems.put(items[2], subItems2); 

     String[] subItems3 = { "Select Fruit", "Apple", "Orange", "Banana" }; 
     subItems.put(items[3], subItems3); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     String item = (String)mainComboBox.getSelectedItem(); 
     Object o = subItems.get(item); 

     if (o == null) 
     { 
      subComboBox.setModel(new DefaultComboBoxModel()); 
     } 
     else 
     { 
      subComboBox.setModel(new DefaultComboBoxModel((String[])o)); 
     } 
    } 

    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame("SSCCE"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new ComboBoxTwo()); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

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

어떻게 데이터베이스에이 예제를 변환하는?

ActionListener에서 데이터베이스를 쿼리하여 선택한 부서의 코스를 가져온 다음 모델을 만듭니다.

+0

당신의 대답은 더 좋습니다 :) – ManyQuestions

관련 문제