Pergunta

Eu quero implementar seguintes funcionalidades, mas estou confuso se é possível em Java. Se sim, de que forma? Por favor, ajuda:

Eu quero criar uma espécie JTable da mesa onde 1a linha da tabela contém os nomes das colunas e um ícone em cada coluna ou seja, em cada célula da primeira linha. Clicando nesse ícone deve levar à remoção dessa coluna da tabela (possível usando MouseListener ??).

Eu encontrei muitos solução onde eu posso adicionar botão para uma célula em JTable mas nenhum que descreve a adição de texto e ícone (com MouseListener) a uma célula. Por favor, veja se você pode ajudar e muito obrigado pela leitura.

Foi útil?

Solução

Você pode criar um TableCellRenderer personalizado que estende JLabel. Este JLabel pode ser criado com um ícone (JLabel pode exibir ícones, à direita ou à esquerda do texto). Você vai querer o getTableCellRendererComponent para teste wether a linha que está sendo processado é o primeiro ou não, e em caso afirmativo, definir o ícone, caso contrário, não.

Para a ação de remoção, você pode adicionar um MouseListener sobre a mesa, e quando processando o método mouseClicked, você pode encontrar a célula que foi clicado no testando a rowAtPoint e columnAtPoint criando um Point do mouseEvent.getX() e mouseEvent.getY(). Se você determinar a primeira linha com o ícone foi clicado, você pode remover a coluna do modelo de coluna.

Se por 1a linha , você realmente quer dizer o cabeçalho da tabela, você pode criar o mesmo processador para o JTableHeader, e definir o MouseListener sobre esse componente.

Outras dicas

Bem, eu não entendi sua pergunta.

Eu quero criar uma espécie JTable de mesa onde 1ª linha da tabela contém nomes de coluna e um ícone

Você quer dizer o cabeçalho da tabela, gosto da maneira como triagem obras, exibindo o nome da coluna e a direção de classificação?

Se sim, então você usa um renderizador personalizado para o cabeçalho da tabela e adicionar um MouseListener para o cabeçalho para determinar qual coluna foi clicada. Você deve ser capaz de personalizar a padrão Table Header Renderer para fazer o que quiser.

Ou você quer dizer a primeira linha de dados na tabela. Se sim, então você ainda precisa usar um processador personalizado mas desta vez você adicionar o MouseListener para a tabela não o cabeçalho da tabela.

Em ambos os casos, você pode usar o método TableColumnModel.removeColumn () para remover a coluna da exibição da tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top