首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将数据库中的数据设置到组合框?

如何将数据库中的数据设置到组合框?
EN

Stack Overflow用户
提问于 2021-07-17 14:28:52
回答 1查看 43关注 0票数 0

在这段代码中,我使用1个JComboBox从数据库中获取数据,并将其放入组合框中。但它给出了一个例外,即ClassCastException

代码语言:javascript
运行
复制
package com.admin;

import java.awt.EventQueue;
import java.util.List;

import javax.swing.JFrame;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.entity.DepartmentTable;
import com.helper.FactoryProvider;

import javax.swing.JComboBox;

public class Demo {

    private JFrame frame;
    private static JComboBox comboBox;
    private static SessionFactory factory;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Demo window = new Demo();
                    window.frame.setVisible(true);
                    factory = FactoryProvider.getFactory();
                    setCombobox();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            private void setCombobox() {
                Session session = factory.openSession();
                Query q = session.createQuery("select dept_name from 
                DepartmentTable");

                List<DepartmentTable> list = q.list();
                for (DepartmentTable dept : list) {
                    comboBox.addItem(dept.getDept_name());
                }

            }
        });
    }

    public Demo() {
        initialize();
    }

    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 816, 408);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JComboBox comboBox = new JComboBox();
        comboBox.setBounds(342, 55, 183, 35);
        frame.getContentPane().add(comboBox);
    }
}

错误是:

代码语言:javascript
运行
复制
java.lang.ClassCastException: class java.lang.String cannot be cast to class com.entity.DepartmentTable (java.lang.String is in module java.base of loader 'bootstrap'; com.entity.DepartmentTable is in unnamed module of loader 'app')
    at com.admin.Demo$1.setCombobox(Demo.java:41)
    at com.admin.Demo$1.run(Demo.java:30)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
EN

回答 1

Stack Overflow用户

发布于 2021-07-19 11:25:35

每当我们试图将一个类从一种类型不正确地转换为另一种类型时,例如,当我们试图将父对象类型转换为子类型时,或者当我们试图将一个对象类型转换为它不是其实例的子类时,JVM就会自动引发这个异常。

代码语言:javascript
运行
复制
package com.admin;

import java.awt.EventQueue;
import java.util.List;

import javax.swing.JFrame;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.entity.DepartmentTable;
import com.helper.FactoryProvider;

import javax.swing.JComboBox;

public class Demo {

    private JFrame frame;
    private static JComboBox comboBox;
    private static SessionFactory factory;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Demo window = new Demo();
                    window.frame.setVisible(true);
                    factory = FactoryProvider.getFactory();
                    setCombobox();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            private void setCombobox() {
                Session session = factory.openSession();
                Query q = session.createQuery("from DepartmentTable");

                List<DepartmentTable> list = q.list();
                for (DepartmentTable dept : list) {     
                    String str=(String)dept.getDept_name();
                    
                    Object obj=(Object)str;

                    comboBox.addItem(obj);
                }

            }
        });
    }

public Demo() {
    initialize();
}

private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 816, 408);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    comboBox = new JComboBox();
    comboBox.setBounds(342, 55, 183, 35);
    frame.getContentPane().add(comboBox);
}

}

ClassCastException的详细说明

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68417993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档