2014-05-15 45 views
0

我的数据库中有两张表作为学期表和课程表。学期表中有semesterId,courseId,courseName和Sdepartment(部门名称)。课程表中有courseId和courseName。 我有两个组合框我的jframe.First是为选择一个部门。第二个是选择课程。我想选择课程作为选定的部门。 当我选择一个部门时,如何在组合框中调用课程名称? 这里我的代码;如何在java中的组合框之间使用过滤器?

 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