我想在组合框中调用课程名称并打印所选课程名称的课程Id,如何解决此问题?
public void coursename(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query= session.createQuery("select a.courseName,a.courseId from Semester e inner join e.course as a");
for (Iterator it = query.iterate(); it.hasNext();) {
Object row[] = (Object[]) it.next();
combocourse.addItem(row[0]);
}
session.close();
}
private void combocourseActionPerformed(java.awt.event.ActionEvent evt) {
JComboBox combocourse = (JComboBox)evt.getSource();
Object row[] = (Object[])combocourse.getSelectedItem();
System.out.println("id"+row[1] );
}发布于 2014-05-14 18:18:03
通过不尝试将String转换为Object[]来实现。查看您正在使用的方法的返回值,并使用适当类型的变量来存储这些返回值。JComboBox#getSelectedItem返回一个Object (在本例中显然是一个String),而不是一个数组(任何类型)。但在这一行中:
Object row[] = (Object[])combocourse.getSelectedItem();...您正试图将其转换为Object[] (Object数组),以便可以将其存储在Object[]中。你不能这么做。
看起来row应该只是Object或String,而不是Object[],而且当你使用它时,你应该直接使用它,而不是作为row[1]
Object row = combocourse.getSelectedItem();
System.out.println("id"+row ); 或
String row = (String)combocourse.getSelectedItem();
System.out.println("id"+row ); 在你问的一条评论中:
我在combobox中调用了coursename,但我应该将coursename保存在我的数据库中。如何获取courseId?
我不认识JComboBox。基本上,您需要存储包含两个值( ID和name)的内容,然后在获取所选项目时使用该内容。除非JComboBox具有某些内置的功能,否则您可能需要一个简单的类来保存这些值并通过返回courseName来实现toString。大概是这样的东西:
class CourseItem {
private String courseName;
private String courseId; // Or int or whatever
CourseItem(String courseName,String courseId) {
this.courseName = courseName;
this.courseId = courseId;
}
public String getCourseName() {
return this.courseName;
}
public String getCourseId() {
return this.courseId;
}
public String toString() { // For display
return this.courseName;
}
}然后:
public void coursename() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select a.courseName,a.courseId from Semester e inner join e.course as a");
for (Iterator it = query.iterate(); it.hasNext();) {
Object row[] = (Object[]) it.next();
combocourse.addItem(new CourseItem((String)row[0], (String)row[1]));
}
session.close();
}
private void combocourseActionPerformed(java.awt.event.ActionEvent evt) {
JComboBox combocourse = (JComboBox) evt.getSource();
CourseItem item = (CourseItem)combocourse.getSelectedItem();
System.out.println("id" + item.getCourseId());
}发布于 2014-05-14 18:18:18
尝试:
Object row = (Object)combocourse.getSelectedItem();
System.out.println("id"+row ); 您只能将单个对象添加到组合过程中,而不是对象数组。
发布于 2014-05-14 18:32:51
在本例中,combocourse.getSelectedItem();返回String,而string不能转换为对象数组。如果您想要获取对象列表,它们会使用getSelectedObjects()
https://stackoverflow.com/questions/23651751
复制相似问题