java - 如何将数据从数据库设置到组合框?
问题描述
在这段代码中,我取 1JComboBox
并从数据库中获取数据,并将其放入组合框中。但它给出了一个例外, IE ClassCastException
。
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);
}
}
错误是:
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)
解决方案
每当我们尝试将一个类从一种类型不正确地类型转换为另一种类型时,即当我们尝试将父对象类型转换为子类型或尝试将对象类型转换为它不是子类时,JVM 会自动出现此异常实例。
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的详细解释
推荐阅读
- php - 如何使用 PHP 从 MYSQL 数据库中计算百分比?
- oop - 在特定用例中“程序到接口”的好处
- ruby-on-rails - 在 ActiveAdmin 索引页面的底部插入自定义元素
- python - python: 安装 Numpy
- bash - 解析多行程序输出
- python - 如果调用某些 pdb 方法,GIMP Python-Fu 插件将不会注册
- optimization - 如果使用 cplex 求解器,Scipy 和纸浆会更好
- php - WP_Post 类的对象无法转换为字符串
- javascript - 如何将带有自己的单击事件的模式附加到动态创建的跨度 - 必须单击新添加的项目两次
- python - 如何使用 Python 创建一个新的数据库 .mdb