如果不设法投下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,但我应该将课程ID保存在我的数据库中。我如何获得courseId?
我不知道JComboBox
。基本上,您需要存储包含两个值(ID和名称)的内容,然后在获取所选项目时使用该内容。除非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());
}
你能澄清你的问题吗?究竟是什么错误,你在代码的哪一行? – metacubed
字符串不能转换为Object of Array ... @哪行? –
尝试将'getSelectedItem'改为'getSelectedObjects',这会返回所选对象的列表 – user902383