Action para pegar linha selecionada da jtable

2 respostas
P

Pessoal, conseguir (finalmente) criar uma jtable com botões em uma determinada coluna (consegui seguindo um tutorial). O problema é que agora preciso excluir a linha quando clico no botao que esta na jtable, só que quando clico (ainda em testes) para exibir a linha selecionada e a coluna selecionada do botão, por exemplo, da primeira linha, o resultado é -1, -1, ou seja, não pega o valor correto. Dai se eu clico em outro botao de outra linha, o resultado é a seleção da linha anterior, neste caso, como cliquei na primeira linha primeiro, o resultado é 0 , 0.

Bom, como posso fazer para trabalhar com a linha em questão, seja para atualizar, deletar, editar, salvar alguma alteração, exibir uma nova janela baseada nesta linha, tudo isso sempre após clicar no botão que está nesta linha X (que pode ser qualquer uma).

PS: eu desejo editar SOMENTE a linha em questão.

Se alguem tiver sugestoes, por favor, coloquem! Obrigado!

2 Respostas

M

Cara realmente com um JTable voce pode fazer inúmeras coisas, se puder posta seu código que ficará mais fácil ajudar…
Mas provavelmente a questão dos resultados que vem em cada linha, isto é tratado dentro mo método getValueAt…

P

meu código está assim, peguei da net ara estudar mas nao consigo personalizar a action.

String[] colunas = {"JButton", "JLabel", "Exemplo"};
//        String [][] dados ={null, null, null};
        List dados = new ArrayList();
        dados.add(null);
        dados.add(null);
        dados.add(null);
        boolean [] editavel = {true, true, true};
        jTable.setRowHeight(30);
        GenericTabelModel gtb = new GenericTabelModel(dados, colunas, editavel);
        jTable.setModel(gtb);
       // jTable.setEnabled(false);
        try {
            JButton jb = new JButton("BOTÃO");
            jb.setEnabled(false);
            jb.setSize(50, 30);
            // Crio um JButton para o Renderer
            GenericComponentGenerator jButtonRenderer = new GenericComponentGenerator(Color.WHITE, new BorderLayout());
            jButtonRenderer.criarComponente(jb);

            // crio outro JButton igual ao do Renderer só que para ser o Editor
            // Faço isso para não ter problemas, se eu usar apenas um botão, quando
            // eu passar o mouse em cima da linha da JTable ai ele some
            GenericComponentGenerator jButtonEditor = new GenericComponentGenerator(Color.WHITE, new BorderLayout());
            jButtonEditor.criarComponente(new JButton("BOTÃO"));
            ((JButton) jButtonEditor.getComponente()).addMouseListener(new MouseAdapter() {
                @Override
                public void mousePressed(MouseEvent e) {
                  //evento aqui!
                }
            });
            
            // Adiciono os componentes nas celulas Renderer e Editor
            jTable.getColumnModel().getColumn(0).setCellRenderer(new GenericCellEditor(jButtonRenderer));
            jTable.getColumnModel().getColumn(0).setCellEditor(new GenericCellEditor(jButtonEditor));

            // Criando um JLabel para a coluna 1
            GenericComponentGenerator jLabelRenderer = new GenericComponentGenerator(Color.WHITE, new FlowLayout());
            jLabelRenderer.criarComponente(new JLabel("Teste"));

            GenericComponentGenerator jLabelEditor = new GenericComponentGenerator(Color.LIGHT_GRAY, new FlowLayout());
            jLabelEditor.criarComponente(new JLabel("Teste"));
            ((JLabel) jLabelEditor.getComponente()).addMouseListener(new MouseAdapter() {
                @Override
                public void mousePressed(MouseEvent e) {
                    JOptionPane.showMessageDialog(null, "Agora isso aqui é um JLabel!!");
                }
            });

            jTable.getColumnModel().getColumn(1).setCellRenderer(new GenericCellEditor(jLabelRenderer));
            jTable.getColumnModel().getColumn(1).setCellEditor(new GenericCellEditor(jLabelEditor));

        }

Eu pretendo conseguir por exemplo, ao se clicar com mouse no botão, que seja excluida, ou que seja exibida um modal com a linha, onde o botao clicado se encontra, detalhada por exemplo. São duas possibilidade, eu só preciso quem alguem me ajude a descobrir ou solucionar como pegar a linha corretamente. Se conseguir isso o resto eu resolvo. Obrigado.

Criado 7 de junho de 2009
Ultima resposta 8 de jun. de 2009
Respostas 2
Participantes 2