簡體   English   中英

如何按字母順序對JList中的項目排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM