Como eu posso mudar a cor de fundo de um item de JList que não for selecionado?

TheAlexGamer:

Heyy. Eu estou escrevendo uma ferramenta em Java que apaga arquivos não na lista de autorizações. Não pergunte. Ele enumera um diretório que o usuário seleciona com o JFileChooser. Isso funciona bem, todos os nomes de arquivos são listet em um JList (no meu caso dentro de um JScrollPane) e exibido dentro do quadro.

Agora eu quero ler nomes de arquivos a partir de um arquivo .txt e verifique se eles correspondem aos nomes na lista. A leitura e comparação não é problema. Mas eu gostaria de definir um fundo verde se o arquivo corresponde a um dos arquivos dentro do arquivo .txt. Se não, então o fundo do item exibido deve ser vermelho. Mas como eu posso mudar estes fundos para uma linha se o seu mesmo possível?

Alec B.:

Simples, definir um ListCellRenderer personalizado para seu JList usando:

list.setCellRenderer(myListCellrenderer);

Agora dentro do getListCellRendererComponent método substituído () fazer algo como isto:

public Component getListCellRendererComponent(.....) {
    Component c = super.getListCellRendererComponent();
    c.setBackGround(Color.blue)
    return c;
}

Quando a lógica determina que você deve mostrar a linha como verde (quando os nomes de arquivo são iguais), você também tem a opção de definir o estado no objeto de apoio da linha e testá-lo para esse Estado dentro getListCellRendererComponent (), dando o fundo verde se o estado está correta. Novamente, você tem a opção de definir um balanço Timerpara reverter o estado no objeto de apoio.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=231018&siteId=1
Recomendado
Clasificación