gpt4 book ai didi

java - 实现ListCellRenderer

转载 作者:行者123 更新时间:2023-12-01 18:23:16 25 4
gpt4 key购买 nike

我一直坚持实现 ListCellRenderer。这是我的代码。

我正在以 Domain 类的形式从数据库获取数据,如下所示:

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;
}
}

问题是我没有用 Domain 填充 Jlist,而是用一个字符串字段填充 Jlist,因此 getListCellRendererComponent 中的 value 参数看不到归档状态,所以我不知道如何标记其背景的字段想改变。

希望我提供了所有信息,并且有人可以为我指出正确的方向。

最佳答案

The problem is that I am not populating Jlist with Domain

好吧,请使用域填充JList。也许是这样的:

public class MyListCellRenderer extends DefaultListCellRenderer {

@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component cell = null;

if (value instanceof Domain) {
Domain domain = (Domain)value;
int status = domain.getStatus();
String naziv = domain.getNaziv();

cell = super.getListCellRendererComponent(list,
naziv, // note this...
index,
isSelected,
cellHasFocus);

if (status > 0) { // or whatever...
cell.setBackground(STATUS_ON_COLOR);
} else {
cell.setBackground(STATUS_OFF_COLOR);
}
}
}

return cell;
}

关于java - 实现ListCellRenderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27049473/

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