0

ListCellRenderer の実装に行き詰まっています。これは私のコードです。

次のような Domain クラスの形式で DB からデータを取得しています。

public class Domain {

    private Integer id;
    private String naziv;
    private Integer status;

    public Domain(){}

    public Integer getId() {return id;}
    public void setId(int i){id = i;}

    public String getNaziv(){return naziv;}
    public void setNaziv(String n){naziv = n;}

    public Integer getStatus(){return status;}
    public void setStatus(int s){status = s;}
}

JList のセットアップ:

        DefaultListSelectionModel m = new DefaultListSelectionModel();
        m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        m.setLeadAnchorNotificationEnabled(false);
        DefaultListModel<String> modelRN = new DefaultListModel<String>();
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(10, 86, 390, 199);
        contentPane.add(scrollPane);
        JList<String> listRN = new JList<String>(modelRN);
        scrollPane.setViewportView(listRN);
        listRN.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        listRN.setSelectionModel(m);

そして、これは私がリストを作成する方法です:

        dRN = new DBdomain(s,a,b).Conn();
        for(int i=0;i<dRN.size();i++){
        modelRN.addElement(dRN.get(i).getNaziv()); 

どこdRN = ArrayList<Domain>

だから問題はこれです。Domain.getNaziv() である文字列をリストに入力していますが、Domain.getStatus() が特定の値を持つリストの背景を変更したいと考えています。次のようなものを実装する必要があることはわかっています。

public class MyListCellRenderer extends DefaultListCellRenderer {
         @Override
         public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
             Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
             // do something
             return c;
         }
    }

問題は、Jlist に Domain を入力しているのではなく、文字列である Domain フィールドを入力しているため、getListCellRendererComponent の値の引数にフィールドのステータスが表示されないため、背景を変更したいフィールドをマークする方法がわからないことです。 .

私がすべての情報を提供し、誰かが私を正しい方向に向けることができることを願っています.

4

1 に答える 1