gpt4 book ai didi

Java 按状态对 jlist 进行排序

转载 作者:行者123 更新时间:2023-12-02 06:55:50 25 4
gpt4 key购买 nike

我有一个小问题,我不知道如何按从数据库检索的状态对我的 jlist 进行排序。我想按“在线”和“离线”排序,我的意思是在线计算机首先进入,然后是离线计算机,我现在有这个代码,它只是为 jlist 制作图标+文本

你能告诉我如何过滤/排序状态吗?

public void acx_pc(String query) {
try {
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
String comb;
Map<Object, Icon> icons = new HashMap<>();
ArrayList<String> pc_list = new ArrayList<>();
int i = 0;


while (rs.next()) {
//Getting info from DB

String pc_name = rs.getString("nombre_pc");
String pc_ip = rs.getString("IP");
String status = rs.getString("estado");
//Setting text for the jList
comb = pc_name + " - " + pc_ip;
//Comparing Status
switch (status) {
case "online":
//This is just for rendering an image+text to Jlist
icons.put(comb, new ImageIcon(getClass().getResource("/Imagenes/com_on_30x30.png")));

break;
case "offline":
//This is just for rendering an image to Jlist
icons.put(comb, new ImageIcon(getClass().getResource("/Imagenes/com_off_30x30.png")));
break;
}
//Adding info to ArrayList
pc_list.add(i, comb);
i++;

}

con.close();
// Setting the list/text on Jlist
Home.computer_jlist.setListData(pc_list.toArray());
// create a cell renderer to add the appropriate icon
Home.computer_jlist.setCellRenderer(new pc_cell_render(icons));

} catch (Exception e) {
System.out.println("Error aqui: " + e);

}
}

我想做一些类似的事情(应该自动排序) http://imageshack.us/a/img27/9018/2mx1.png

而不是: http://imageshack.us/a/img407/346/e9r.png

最佳答案

您可以使用 Collections.sortpc_list 进行排序自定义实用方法Comparator .

但是,这可能有点过分了。仅使用两个列表会更容易:

ArrayList<String> pc_list = new ArrayList<>();
ArrayList<String> pc_offline_list = new ArrayList<>();

// . . .

switch (status) {
case "online":
//This is just for rendering an image+text to Jlist
icons.put(comb, new ImageIcon(getClass().getResource("/Imagenes/com_on_30x30.png")));
pc_list.add(comb);
break;
case "offline":
//This is just for rendering an image to Jlist
icons.put(comb, new ImageIcon(getClass().getResource("/Imagenes/com_off_30x30.png")));
pc_offline_list.add(comb);
break;
}

// . . .

pc_list.addAll(pc_offline_list);
Home.computer_jlist.setListData(pc_list.toArray());

所以你一开始就把离线的分开,然后把它们全部粘到你找到的最后一个上。通过将它们分开,可以避免进行任何排序!

此外,add 方法默认添加到末尾(追加),因此您会注意到我只是编写了 pc_list.add(comb) 而不是 pc_list.add(i,comb).

关于Java 按状态对 jlist 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376638/

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