如何在java中的组合框之间使用过滤器?

2024-05-02

我的数据库中有两个表,分别是学期表和课程表。学期表中有学期 ID、课程 ID、课程名称和 Sdepartment(部门名称)。课程表有课程 ID 和课程名称。 我的 jframe 有两个组合框。第一个用于选择部门。第二个用于选择课程。我想选择所选部门的课程。 当我选择一个部门时,如何在组合框中调用课程名称? 这是我的代码;

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

一种方法是每次从部门组合框中选择项目时重置课程组合框的模型。

就像是:

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 中,您查询数据库以获取所选部门的课程,然后创建模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在java中的组合框之间使用过滤器? 的相关文章

随机推荐

  • 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

    我正在尝试设置 nhibernate 二级缓存我在这篇文章中看到 http www gitshah com 2012 03 nhibernate and caching part 2 html我想了解查询缓存和实体缓存之间的区别 它说你需要
  • React:将组件作为 prop 传递,而不使用 this.props.children

    我有这个组件Foo js a svg component with a star svg icon import IconStar from react svg icons call a button with a custom icon
  • Javascript 访问浏览器上的拼写检查器

    是否可以从 Javascript 访问浏览器中合并的文本区域拼写检查器 我希望能够在我的代码中控制拼写检查 如今 大多数浏览器 IE 除外 似乎都内置了某种拼写检查器 据我所知 最常见的访问方式是禁用或启用字段上的拼写检查 内联禁用 Fir
  • 使用一条语句在 MySQL 中添加多列

    我试图将多个列添加到 phpMyAdmin 中的现有表中 但我不断收到相同的错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法 我在写信 ALTER TABLE WeatherCente
  • 我们已经让 MEF 与 MVC4 一起工作,那么基于约定的模型怎么样?

    经过深入研究 我发现可以在 MVC4 中使用 MEF 进行 DI 下面的 SO 链接给出了几个示例 如何将 MEF 与 ASP NET MVC 4 和 ASP NET Web API 集成 https stackoverflow com q
  • 检索 Python 脚本的返回值

    我有一个外部 C 程序 它使用以下命令执行 Python 脚本Process class 我的脚本返回一个数字代码 我想从我的 C 程序中检索它 这可能吗 问题是 我得到的返回码是python exe而不是从我的脚本返回的代码 例如 3 解
  • 如何在 Windows 上使用 Pyreverse

    我想使用pyreverse 创建图表类 我下载它 当我使用这个命令时 pyreverse bat c PyreverseCommand a1 s1 f ALL o png test py 我收到错误 名称 点 无法识别 什么是 点 如何创建
  • 是否有一种经济有效的方法来备份 Firebase Firestore?

    据我了解 备份 Firestore 数据库会导致读取每个文档 这看起来非常昂贵 例如 假设我有一个有 1000 个用户的笔记应用程序 每个用户每天创建 100 个文档并阅读 100 个文档 每月的费用为 reads 1000 100 30
  • 以编程方式安装 apk,无需定义 apk 名称

    我正在尝试以编程方式从 SD 卡安装 apk 而不提及 apk 的名称 我现在能做的就是安装我在代码中命名的 apk 但如果我想在我的设备上安装另一个 apk 那么它就不方便了 为此我必须进入我的代码并更改 apk 的名称 有没有办法在运行
  • 'InvalidOperationException',原因:'fbauth2 在 LSApplicationQueriesSchemes 下的 Info.plist 中丢失,并且是 iOS 9.0 所必需的'

    在将其标记为重复之前 请注意我已经尝试了相关问题中的所有解决方案 当我单击应用程序上的 Facebook 登录按钮时 应用程序崩溃并出现此错误 2015 10 28 18 31 05 277 retailcatalogue 96362 20
  • (Console.BufferHeight) 我无法使用 Console.WriteLine 查看/滚动查看所有控制台输出

    当我运行此代码时 输 出窗口顶部的数字是 99701 为什么我看不到一直到 1 的数字 我实际上看到所有数字都被输出 但在控制台窗口上 我只能滚动到足够高才能看到 99701 我猜 我在 Vista Home 上使用 Visual C Ex
  • 如何向 display:block 添加过渡/效果

    我有一个这样的div x 以及最初隐藏的一种 子菜单 x submenu display none 仅当用户位于 x div 上时子菜单才可见 div x hover x submenu display block 现在 我想通过事务或使可
  • 选择部分文本右对齐[重复]

    这个问题在这里已经有答案了 我想知道是否有任何方法可以将选项文本的一部分向右对齐 在下面 您可以看到我有一个选择 左侧有一些名称 右侧有 垂直 我需要将 垂直 向右拉 有什么办法可以做到这一点吗
  • 如何用其他树替换子树?

    在 Scala 宏中 我想做这样的事情 我有一个Tree 可能很大 现在我想找到这棵树的一个具有某种具体形式的子树 例如Apply 现在我想创建一棵新树 它是原始树的副本 但找到的子树被其他树替换 例如 通过类似的方法 我可以用调用某些其他
  • MySQL 5.0 索引 - 唯一索引与非唯一索引

    MySQL 唯一索引和非唯一索引在性能方面有什么区别 假设我想在 2 列的组合上创建索引 并且该组合是唯一的 但我创建了一个非唯一索引 这会对 MySQL 使用的性能或内存产生重大影响吗 同样的问题 有区别吗primary钥匙和unique
  • Orchard 1.7 - 为未发布的内容创建自定义工作流程活动

    我需要利用 Orchard CMS 中的活动列表 未发表的活动是要求之一 我查看并发现 Orchard 默认工作流程活动列表没有未发布的活动 我构建了一个模块来添加我自己的自定义工作流程活动 我在创建活动并使它们工作方面没有问题 但我不知道
  • 编译错误:linux/module.h:没有这样的文件或目录

    我写了一个简单的模块 define KERNEL define MODULE include
  • IIS 进程无法访问正在使用的文件

    我们为服务器创建了 SSL 证书 当我们想要启动 IIS 时 我们收到此错误 该进程无法访问该文件 因为该文件正在被另一个进程使用 端口 443 似乎正在使用中 我该如何解决这个问题 或者我怎样才能知道为什么端口 443 被使用 Marc
  • 如何在多个Postgresql数据库之间共享表

    我的 Web 应用程序有多个部署 每个部署都是一个具有唯一 URL 的唯一站点 每个部署都有不同的数据 UI 等 但有非常相似的 Postgresql 数据库结构 带有 PostGIS 这些数据库都位于同一数据库服务器上 我希望来自 1 个
  • 如何在java中的组合框之间使用过滤器?

    我的数据库中有两个表 分别是学期表和课程表 学期表中有学期 ID 课程 ID 课程名称和 Sdepartment 部门名称 课程表有课程 ID 和课程名称 我的 jframe 有两个组合框 第一个用于选择部门 第二个用于选择课程 我想选择所