Java 如何为JList提供ID和名称?
我有一个简单的数据库,有两列(ID,Firstname)。现在,我将表中的每个名字显示为列表项。到目前为止,这是可行的。我要做的是将我的db表中的ID与firstname连接起来,因为如果我单击列表项,数据将显示在文本字段中 我已经创建了一个helper类,其名称和ID为字段Java 如何为JList提供ID和名称?,java,Java,我有一个简单的数据库,有两列(ID,Firstname)。现在,我将表中的每个名字显示为列表项。到目前为止,这是可行的。我要做的是将我的db表中的ID与firstname连接起来,因为如果我单击列表项,数据将显示在文本字段中 我已经创建了一个helper类,其名称和ID为字段 public class ListDataHelper { private int id; private String name; public ListDataHelper(int id, S
public class ListDataHelper {
private int id;
private String name;
public ListDataHelper(int id, String description) {
this.id = id;
this.name = description;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String toString() {
return name;
}
}
我的主课看起来是这样的,到目前为止还可以用
private void getAllAccounts(){
listAccounts.removeAll();
try{
String sql="select * from accounts";
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
DefaultListModel DLM = new DefaultListModel();
while(rs.next()){
DLM.addElement(new ListDataHelper(rs.getInt("ID"), rs.getString("FirstName")));
}
listAccounts.setModel(DLM);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
finally {
try{
rs.close();
pst.close();
}
catch(Exception e) {
}
}
}
但是,当我想要检索数据时,我被困在了这一点上。我不知道如何使用我创建的helper类,也不知道如何从selectedValue获取ID
private void getAllData() {
String data =listAccounts.getSelectedValue();
String sql="select * from accounts where ID=?";
try{
pst=conn.prepareStatement(sql);
pst.setString(1, data);
rs=pst.executeQuery();
while(rs.next()){
String add1 =rs.getString("ID");
txtID.setText(add1);
String add2 =rs.getString("FirstName");
txtFirstName.setText(add2);
String add3 =rs.getString("LastName");
txtLastName.setText(add3);
String add4 =rs.getString("Cheque");
txtCheque.setText(add4);
String add5 =rs.getString("Savings");
txtSavings.setText(add5);
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
finally {
try{
rs.close();
pst.close();
}
catch(Exception e) {
}
}
}
编译代码时,出现以下错误:
线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:
ccibank.ListDataHelper无法转换为java.lang.String
已经提前谢谢了!:) 一如既往,通过阅读,一切都会变得简单 如果单击链接(或者只是阅读编译器发出的警告),您会立即看到,
DefaultListModel
是一个泛型类,就像一个集合一样。因此,您应该指定放置在此类模型中的对象的类型。你没有在里面放线。您正在放置ListDataHelper
的实例。所以它应该被宣布为
DefaultListModel<ListDataHelper>
JList<ListDataHelper>
另一件让我印象深刻的事情是,即使您的代码没有编译,您也没有在问题中发布编译错误。为什么呢?编译错误指示了错误的内容和位置。当你有错误时,阅读错误是你应该做的第一件事。不要忽略错误。在编程时,阅读(错误、文档)是极其重要的。一如既往,通过阅读,一切都会变得简单 如果单击链接(或者只是阅读编译器发出的警告),您会立即看到,
DefaultListModel
是一个泛型类,就像一个集合一样。因此,您应该指定放置在此类模型中的对象的类型。你没有在里面放线。您正在放置ListDataHelper
的实例。所以它应该被宣布为
DefaultListModel<ListDataHelper>
JList<ListDataHelper>
另一件让我印象深刻的事情是,即使您的代码没有编译,您也没有在问题中发布编译错误。为什么呢?编译错误指示了错误的内容和位置。当你有错误时,阅读错误是你应该做的第一件事。不要忽略错误。在编程时,阅读(错误、文档)非常重要。感谢您的帮助。是的,我应该阅读文档,你说得对。当我编译代码时,当我从Jlist中选择一个值时,它会在该点上运行为一个错误。线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:ccibank.ListDataHelper无法转换为java.lang.String,如果我添加上面提到的代码:ListDataHelper selectedAccount=listAccounts.getSelectedValue();我的IDE说:字符串不能转换为ListDataHelper。我会尝试阅读文档,以便更好地理解我在做什么。我知道这一点。但是你为什么不读一下错误呢。同样,您发布了一个错误,但没有说明错误是什么。通过阅读代码,我知道错误是什么,但您不知道。那么为什么不读一下错误呢?对不起,我在编辑文本。。我是Java和stackoverflow的新手……你是如何声明你的
listAccounts
变量的?我不是这么问的。我问你是怎么申报的。您将其声明为JList listcounts
,对吗?但我的回答是关于如何声明它的?列表是否包含字符串?里面有什么?仔细阅读我的评论和回答。谢谢你的回复。是的,我应该阅读文档,你说得对。当我编译代码时,当我从Jlist中选择一个值时,它会在该点上运行为一个错误。线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:ccibank.ListDataHelper无法转换为java.lang.String,如果我添加上面提到的代码:ListDataHelper selectedAccount=listAccounts.getSelectedValue();我的IDE说:字符串不能转换为ListDataHelper。我会尝试阅读文档,以便更好地理解我在做什么。我知道这一点。但是你为什么不读一下错误呢。同样,您发布了一个错误,但没有说明错误是什么。通过阅读代码,我知道错误是什么,但您不知道。那么为什么不读一下错误呢?对不起,我在编辑文本。。我是Java和stackoverflow的新手……你是如何声明你的listAccounts
变量的?我不是这么问的。我问你是怎么申报的。您将其声明为JList listcounts
,对吗?但我的回答是关于如何声明它的?列表是否包含字符串?里面有什么?仔细阅读我的评论和回答。