我写了我自己的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;
}
});发布于 2012-11-09 10:19:21
发布于 2012-11-09 12:45:22
我认为你不想创建太多的jlabel实例。在您的示例中,您将为get的每次调用创建一个jlabel实例...方法只是将变量标签转换为字段。
https://stackoverflow.com/questions/13301139
复制相似问题