gpt4 book ai didi

java - 检索 JList 项的数组数据

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:19 25 4
gpt4 key购买 nike

我有一个(访问)数据库表,其中包含我想填充到我的 Java 程序列表中的数据。该表由多个列(id、名称等)组成

我想要的是一个列出所有名称的 JList,然后当双击列表中的项目时,我希望将该项目的 ID 号插入到另一个表中。

我已经实现了列表并用数据库表(名称列)中的记录填充了它。我遇到的问题是当用户双击该项目时,我如何才能获得该视频的 ID?填充列表的数据库调用选择多个列并将它们全部放入一个数组中,不太确定如何将该列表项链接到数组。

这是我到目前为止得到的......

java类

  ArrayList list = new ArrayList();
ArrayList video = new ArrayList();
list = VideoData.getVideoList();

JList videolist = new JList();;
Vector data = new Vector();;

for (int i=0; i < list.size(); i++) {
video = (ArrayList) list.get(i);
data.addElement(video.get(3));
}

videolist.setListData(data);
videolist.setSelectedIndex(0);
videolist.addMouseListener(new ActionJList(videolist));
videolist.setFixedCellWidth(300);
add(new JScrollPane(videolist));

getVideoList() 包含什么

ArrayList list = new ArrayList();

try {
ResultSet res = stmt.executeQuery("SELECT * FROM Items ORDER BY VidID ASC");
while (res.next()) { // there is a result
ArrayList sub = new ArrayList();
sub.add(res.getString("VidID"));;
sub.add(res.getString("Name"));
sub.add(res.getString("Writer"));
// add sub array to list
list.add(sub);
}
} catch (Exception e) {
System.out.println(e);
return null;
}

return list;

目前的双击功能如下(网上找的)

  public void mouseClicked(MouseEvent e){     
if(e.getClickCount() == 2){ // double click
int index = list.locationToIndex(e.getPoint());
ListModel dlm = list.getModel();
Object item = dlm.getElementAt(index);;
list.ensureIndexIsVisible(index);
System.out.println("Double clicked on " + item);
}
}

.. 从这个 item 中只告诉我 JList 单元格中列出的内容,我需要做的是获取该所选项目的其他数组数据。

最佳答案

(我使用泛型 <...> 使代码更具可读性。)

正如@HovercraftFullOfEels 所说,JList 可能包含整个视频对象:

static class Video {
String vidID;
String name;
String writer;

@Override
public String toString() {
return writer; // For JList display
}
}

用法如下。

List<Video> list = VideoData.getVideoList();

JList videolist = new JList();

Vector<Video> data = new Vector<Video>();
for (int i=0; i < list.size(); i++) {
Video video = list.get(i);
data.addElement(video);
}

videolist.setListData(data);
videolist.setSelectedIndex(0);
videolist.addMouseListener(new ActionJList(videolist));
videolist.setFixedCellWidth(300);
add(new JScrollPane(videolist));

使用 getVideoList 作为:

List<Video> getVideoList() {
List<Video> list = new ArrayList<Video>();

try {
ResultSet res = stmt.executeQuery("SELECT VidID, Name, Writer FROM Items ORDER BY VidID ASC");
while (res.next()) { // there is a result
Video sub = new Video();
sub.vidID = res.getString("VidID");
sub.name = res.getString("Name");
sub.writer = res.getString("Writer");
list.add(sub);
}
res.close();
} catch (Exception e) {
System.out.println(e);
return null;
}

return list;
}

关于java - 检索 JList 项的数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9458978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com