簡體   English   中英

如何將數據庫中的數據設置到組合框?

[英]How to set data from database to combo box?

在這段代碼中,我使用 1 個JComboBox從數據庫中獲取數據,並將其放入組合框中。 但它給出了一個異常,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 的詳細說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM