Click no item da JTable

17 respostas
colosos_colossus

Bom esse click é para abrir juntamente com os dados do item selecionado a Tela de Alterar que é um JFrame
se precisarem de dados do progeto, pode pedir.

por enquanto fiz um botão Alterar que quando eu seleciono um item da tabela e em seguida eu aperto ele, abra o JFrame de alterar.

agora eu quero dando 2 click’s abrir a tela de alterar com os dados do item selecionado assim como estar com o botão.
Bom tem banco e tudo.

vlw awe!

:!:

17 Respostas

dyorgio

supondo que seu botão se chame btAtualizar e sua tabela se chame table
ficaria assim:

table.addMouseListener(new MouseAdapter(){ onMousePress(MouseEvent e){ if (e.getClickCount() > 1){ btAtualizar.doClick(); } }};

no caso, para vc pegar os dados da linha use o table.getSelectedRow().

Desculpe se der erro de compilação, fiz de cabeça.

colosos_colossus

Estranho.
isso é pra ativar o botão se eu clicar 2 vezes no item da tabela?
e é pra bota esse seu cod no botão?

dyorgio

Vc falou que o botão atualizar ja abria a janela…
portanto aproveite a implementação que vc colocou no botão…
esse codigo deve estar no mesmo lugar que vc instancia a tabela e o botão…
dessa maneira, para vc ficara transparente, pois mesmo apertando o botão
quanto clicando 2x na tabela, vai usar o mesmo codigo.

colosos_colossus

Bom eu estou trabalhando no netBeans e eu fiz a tabela na interface ja informa os dados do banco tudo e tals
bem onde eu istanciei é onde o netBeans cria automatico ou é onde agent edita o codigo da tabela?
eu estou comessando no Java!
n apenas no java mais na programação; e direto com java intend!
estou usando o netBeans na facul e aqui no trabalho!

Pols e onde eu botei ta pedindo pra criar class “e”

a e quando eu boto ele la onde agent tem que editar ta pedindo metodo de retorno.

mais eu mudei pq tinha uma paradinha estranha

dechei assim

table.addMouseListener(new MouseAdapter(){ onMousePress(MouseEvent e){ if (e.getClickCount() > 1){ bAlterar.doClick(); }} });

mais ta dando esses erros awe! :frowning:

e onde vai isso ? “)” q ta fautando sacas ai nesse botei no fim mais acho q não é não
que ve vê la o seu!

colosos_colossus
dyorgio:
Vc falou que o botão atualizar ja abria a janela... portanto aproveite a implementação que vc colocou no botão.. esse codigo deve estar no mesmo lugar que vc instancia a tabela e o botão... dessa maneira, para vc ficara transparente, pois mesmo apertando o botão quanto clicando 2x na tabela, vai usar o mesmo codigo.

bom no botão [list]Alterar[/list] ta assim :

try { table.getValueAt(1,1);
        String sql01 = "SELECT funcionario.codass,funcionario.nomefun,valor,nomeloja FROM funcionario " +
                "LEFT JOIN lojas " +
                "ON funcionario.codass = lojas.codass " +
                "WHERE funcionario.codass=("+table.getValueAt(table.getSelectedRow(),0)+")";
       
               
        jfalterar.setLocation(300, 200);
        jfalterar.setSize(400, 300);
        jfalterar.pack();
        jfalterar.setVisible(true); 
        resultado = stam.executeQuery(sql01);
        resultado.next();
        atualizaCampos2();
        // conectarBanco();
        //this.dispose();
        // table.repaint();
        } catch(SQLException ex){
            JOptionPane.showMessageDialog(null, "Não contem entrada");
        }
}
dyorgio

NEtBeans é foda…mais vamos la
intanciar = lugar onde da new Algumacoisa();

o NetBeans faz um metodo pra isso, normalmente initComponents()

na ultima linha desse metodo vc inclui o codigo que te passei,
POREM, MUITA ATENÇÃO

deves substituir o nome da variavel table e btAtualizar pelas que tu fez, ou o NetBeans…

espero ter ajudado, mais vc esta com muitas duvidas para uma tela tão complexa
faça telas mais simples, que depois essa vai parecer facil para vc.

colosos_colossus

realmente vc está certo initComponents();
mais ta dando linha de erro!

public Promenu() {
        initComponents();
        conectarBanco();
        table.addMouseListener(new MouseAdapter(){
        onMousePress(MouseEvent e){
        if (e.getClickCount() > 1){
        bAlterar.doClick();
        }}
        });
        
    }

o erro é nessa linha
onMousePress(MouseEvent e){

ele diz assim...
[color=red] invalid method declaration; return type required.[/color]

dyorgio

haehahehaehae te avisei que fiz de cabeça
faltou o public void na frente do metodo…

ja visse metodo sem retorno?!?!

ahehahehaehhae

colosos_colossus

pols so descobri que era isso um puco antes de ver seu topico.

blz cara.
mais agora quando eu clico no item automaticamente aparece para mim alterar o nome diretamente na tabela…
n sei c vc me entende…
como se fosse renomear…
eu acho que isso ja vem configurado na tabela do netBeans, me ajuda awe mano
ja procurei nas propriedades e não acho…
eu acho que esta inpedindo de abrir a jFrame Alterar.
[color=blue]vc intendeu?[/color]
ve se tu saca awe o que pode ser;

[color=red]pols botei pra um click e mesmo assim n pego[/color]

dyorgio

entendi sim,
isso eh porque as celulas de sua tabela estão editaveis,
defina o model de sua tabela com DefaultTableModel
e sobreescreva o metodo isCellEditable(int,int)…
por default ele retorna true
ai vc retorna false…
se não me engano o NetBeans cria um DefaultTableModel em algum lugar…
procure e adicione o metodo na classe anonima…
ficaria mais ou menos assim:
no lugar de algo desse tipo:

ficaria assim:

new DefaultTableModel(teusItens){ @Override public boolean isCellEditable(int row, int column){ return false; } }

Mais uma vez fiz de cabeça…então vai ageitando ai até não dar mais erros
de compilação

colosos_colossus
i hapa n tem essa parada awe no meu codigo não. Fui em localizar e tals e não achei nada. Mais em personalizar codigo ta assim.
table = new javax.swing.JTable();

table.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {

    },
    new String [] {
        "CODIGO", "NOME", "LOJA", "VALOR"
    }

));

table.getTableHeader().setReorderingAllowed(false);

jScrollPane2.setViewportView(table);

[color=red]da um olho awe![/color]

dyorgio
isso:
table.setModel(new javax.swing.table.DefaultTableModel(   
    new Object [][] {   
  
    },   
    new String [] {   
        "CODIGO", "NOME", "LOJA", "VALOR"   
    }   
  
));
vira isso:
table.setModel(new javax.swing.table.DefaultTableModel(   
    new Object [][] {   
  
    },   
    new String [] {   
        "CODIGO", "NOME", "LOJA", "VALOR"   
    }   
  
){
@Override   
public boolean isCellEditable(int row, int column){   
return false;   
} }
);

presta mais atenção cara...tava de graça... :P

colosos_colossus

EEeee pols tu falo que ja tinha …

huhauhaua

olha es papo.

ei mas ta blz vo tentar

[color=red]POL pego essa parada awe .
[/color]
[color=blue]So que continua não querendo abrir A JDialog Alterar
fiz tudo que ta awe mais ate agora nada.
[/color]

dyorgio

cara…debuga e ve se entra nos metodos…
acho que a assinatura do onMousePress esta errada,
procuta na net um exemplo de uso e ajusta conforme necessario.

colosos_colossus

[color=green]Não to achando botei um topico no forum![/color]
mais ainda não foi respondido.

colosos_colossus

passei o dBug e ta pulando aqui mesmo..

public void onMousePress(MouseEvent e){
        if (e.getClickCount() > 1){
        bAlterar.doClick();
            }}
        });

    }

te agora n achei nada mano.. tenta fazer um teste awe com netBeans...
[color=red]vlw awe pela atenção[/color][color=green]![/color]

toni.esteves

colosos=colossus, nesse caso como fizesse pra jogar a linha selecionada nos respectivos TextFields, do teu Jframe alterar ???

Criado 24 de junho de 2009
Ultima resposta 5 de dez. de 2011
Respostas 17
Participantes 3