亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法在 JList 中使用 Enum?

有沒有辦法在 JList 中使用 Enum?

吃雞游戲 2023-09-13 15:30:57
我知道JList有帶有Stringand的構造函數DefaultListModel。我想找到一種將列表與enum類型一起使用的方法,例如JList<SomeEnum> jlist。有辦法實現這一點嗎?這是一個小的運行示例:import javax.swing.*;import java.awt.*;public class Example implements Runnable {    private JPanel jPanel;    private JFrame jFrame;    private JList<Algorithm> diagnosisList;    public static void main(String[] args) {        EventQueue.invokeLater(new Example());    }    @Override    public void run() {        jFrame = new JFrame();        jPanel = new JPanel();        jPanel.setLayout(new FlowLayout());        jFrame.getContentPane().add(jPanel);        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);        jPanel.setPreferredSize(new Dimension(500, 300));        DefaultListModel defaultListModel = new DefaultListModel();        defaultListModel.add(0, "Decision Tree");        defaultListModel.add(1, "Random Forest");        diagnosisList = getJList(defaultListModel);        jPanel.add(diagnosisList);        jFrame.pack();        jFrame.setVisible(true);    }    // I want to use Algorithm enum for parameter instaed of DefaultListModel    private JList<Algorithm> getJList(DefaultListModel algorithms) {        JList<Algorithm> jlist = new JList<Algorithm>(algorithms);        return jlist;    }    enum Algorithm {        DECISION_TREE_CLASSIFIER_DIAGNOSTIC("Decision Tree Classifier (D)", "Diagnostic"),        RANDOM_FOREST_DIAGNOSTIC("Random Forest (D)", "Diagnostic"),        LOGISTIC_REGRESSION_DIAGNOSTIC("Logistic Regression (D)", "Diagnostic"),        K_MEANS_DIAGNOSTIC("KMeans (D)", "Diagnostic");        private final String name;        private final String type;        Algorithm(final String name, final String type) {            this.name = name;            this.type = type;        }        @Override public String toString() {            return name;        }    }}
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

您可以像任何其他數組一樣將 an 的值添加enum到 a 中。JList例如:


public class Example implements Runnable {

    private JPanel jPanel;

    private JFrame jFrame;

    private JList<Algorithm> diagnosisList;

    private DefaultListModel<Algorithm> model;


    public static void main(String[] args) {

        EventQueue.invokeLater(new Example());

    }


    @Override

    public void run() {

        jFrame = new JFrame();

        jPanel = new JPanel();

        jPanel.setLayout(new FlowLayout());

        jFrame.getContentPane().add(jPanel);

        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        jPanel.setPreferredSize(new Dimension(500, 300));

        model = new DefaultListModel<>();

        diagnosisList = new JList<Algorithm>(model);


        for (Algorithm a : Algorithm.values())

            model.addElement(a);


        jPanel.add(diagnosisList);


        jFrame.pack();

        jFrame.setVisible(true);

    }


    public static enum Algorithm {

        BFS, DFS, A_STAR

    }

}

如果您不喜歡它的渲染方式,您可以隨時添加自己的ListCellRenderer:


diagnosisList.setCellRenderer(new DefaultListCellRenderer() {

    private static final long serialVersionUID = 1L;


    @Override

    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,

            boolean cellHasFocus) {

        JLabel renderer = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

        renderer.setText(renderer.getText().toLowerCase()); //something

        return renderer;

    }

});


查看完整回答
反對 回復 2023-09-13
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號