gpt4 book ai didi

java - ListCellRenderer 每次都添加新标签?

转载 作者:行者123 更新时间:2023-11-30 05:50:58 27 4
gpt4 key购买 nike

我编写了自己的 ListCellRenderer(下面的代码),它使我的单元格透明。现在,如果我运行它,每次我单击一个列表项时,它都会变得比以前更白。会不会是 JList 总是添加我创建的这个新 JLabel 并覆盖最后一个?

    jListPriority.setOpaque(true);
jListPriority.setBackground(new Color(255, 255, 255, 10));
jListPriority.setBorder(BorderFactory.createLineBorder(new Color(250, 250, 250)));

jListPriority.setCellRenderer(new ListCellRenderer() {

private JLabel label = new JLabel();

public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {

label.setOpaque(true);
label.setText(value.toString());
label.setForeground(new Color(250, 250, 250));
label.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
label.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(250, 250, 250, 50)));
label.setPreferredSize(new Dimension(label.getPreferredSize().width, label.getPreferredSize().height + 3));

if (isSelected) {
label.setBackground(new Color(255, 255, 255, 20));
} else {
label.setBackground(new Color(255, 255, 255, 10));
}

return label;
}
});

最佳答案

Graphics2D 的默认复合使用 AlphaComposite.SRC_OVER 规则,所以结果是预期的。您需要为您想要的效果指定合适的模式。您可能会从中得到一些想法 example .

image

关于java - ListCellRenderer 每次都添加新标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301139/

27 4 0