セルを透過的にする独自のListCellRenderer(以下のコード)を作成しました。これを実行すると、リストアイテムをクリックするたびに、以前よりも白くなります。JListが常にこの新しいJLabel(私が作成したもの)を追加し、最後の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;
}
});