[英]Java - How do I select items in JList 2 based on selection in JList 1?
[英]How do I sort items in a JList alphabetically?
基本上,我想做的是創建一個顯示大量名稱的程序。 我正在嘗試按字母順序在列表中對名稱進行排序。 我正在使用ArrayList。 我知道我可以使用集合按字母順序對它們進行排序,但是如果在這種情況下使用的是對象(NPC),該怎么辦
這就是它的樣子。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class NPC {
public ArrayList<NPC> npcs = new ArrayList<NPC>();
private int id;
private String name;
static String file_name = "./npclist.txt";
public NPC(int id, String name) {
this.id = id;
this.name = name;
}
public static void loadNPCs(java.io.File file) {
new ReadFile(file_name);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void sortByName() {
for(int i=0; i < npcs.size(); i++){
String name = npcs.get(i).getName();
names.add(name);
}
Collections.sort(names);
for(String counter: names) {
System.out.println(counter);
}
}
public void setName(String name) {
this.name = name;
}
}
我的單選按鈕
this.radioBtn = new JRadioButton("Sort by: " + (toggleBtn ? "ID" : "Names"));
radioBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == radioBtn) {
if (toggleBtn) {
sortByID(e);
toggleBtn = false;
radioBtn.setText("Sort by: " + (toggleBtn ? " ID" : "Names"));
radioBtn.setPreferredSize(new Dimension(108, 12));
} else if (!toggleBtn) {
sortByName(e);
toggleBtn = true;
radioBtn.setText("Sort by: " + (toggleBtn ? "ID" : "Names"));
radioBtn.setPreferredSize(new Dimension(108, 12));
}
}
}
});
gbc.insets = new Insets(5, 5, 5, 16);
gbc.anchor = GridBagConstraints.LINE_END;
gbc.gridx = 0;
gbc.gridy = 1;
panel.add(radioBtn, gbc);
和我的默認列表模型
private DefaultListModel<String> itemListModel() {
listModel = new DefaultListModel<String>();
for (NPC npc : ReadFile.getNPCs()) {
if (npc != null) {
listModel.addElement(npc.getName());
}
}
return listModel;
}
NPC應該實現可比接口。 提供compareTo方法的實現
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.