Abrir um formulario depois de uma ação na jTable

10 respostas
M

Gente primeiro vou explciar minha situação depois posto o que fis! … eu tenho um formulario de pesquisa e nele contem um JTable que tem linhas de nomes que cadastrei no meu banco para test, tenho um botao para editar essas linhas, eu quero quando selecionar a linha na minha JTable e apertar o botao ele abrir o otro form ja com o resultset da linha selecionada! olha o que ja consegui

private void bt_editarActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try
    {
        con_Tabela = new conexaoMysql();
        con_Tabela.conectar();
        con_Tabela.executeSQL("select * from cliente");
        con_Tabela.resultset.absolute(tbClientes.getSelectedRow()+1);
        String sql = "select * from cliente Where codigo = "+(con_Tabela.resultset.getInt("Codigo"))+";";
        String nome = "Alterar o cliente : "+con_Tabela.resultset.getString("nome")+" ?";
        int opcao_escolhida = JOptionPane.showConfirmDialog(null,nome,"Exclusão ",JOptionPane.YES_NO_OPTION);
        if (opcao_escolhida == JOptionPane.YES_OPTION)
        {
          // até aqui consegui chegar sem problema nenhum o problema é AQUI como pegar a linha selecionada aqui transformar ela em um objeto e abrir um otro form com esse objeto ja listado na tela!
         OBS: Reforço que o otro form ja esta criado e se relacionando com o banco perfeitamente!!!

        }
    }
        catch(SQLException erro)
        {
            pinta meu erro na tela ae irmão!!
        }
    
}

Muito obrigado pela atencao e pela posível ajuda! THANKS!

10 Respostas

worldsoft

Olhá só. Use o método getValues( Linha_selecionada,Coluna_Desejada) de JTable.

M

certo consegui obter o resultado da linha selecionada, agora vem a parte mais dificil… veja bem a real situação …

Form A = form da linha selecionada(Tela que ira ser fechada)
Form B = form aonde insiro o item da linha selecionada(Tela aberta constante)

como fecho o form A depois te ter pego a linha e insiro no Form B que esta aberto, e insiro esse item da linha selecionada em um JTextField do Form B automaticamente?!?!?!?!? tipo cliquei na linha e apertei no botao esse form fecha e insere o nome no otro formulario que ja esta aberto entende?

RobsonCassol

Vc quer uma tela com uma tabela onde são listados os resultados do banco, então quer alterar esses registros em uma segunda tela que abre sobre a tela com a tabela ? é isso?

explique melhor por favor.

M

vamo la vo tentar explica melhor…
eu tenhu um Form(A) que tem um jtable eu tenho um botao que clico nele e ele pegar a linha selecionada da jtable… ate ai consegui fazer o meu problema eh apartir dai, quero depois que selecionei essa linha quero que meu form A feche, e no meu form(B) que tambem esta em execulsao, quero que em um campo JTextfield insira o que selecionei da jtable do form A, entendeu??? sei que é meio dificil entende algumas expressoes mas qualquer coisa tento re-explicar melhor e obrigado!

worldsoft

Uma Pergunta: O seu form(B) ele entra em execulção antes do form(A) ou Depois? Bom se form depois é só voce criar um parametros no seu form(B) que exija ou não, que quando voce chamar o seu form(B) para execução seje passado esses valores do JTable do Form(A) como parametros.

Metaleiro

[color=darkblue]Não sei se é isso que você precisa, mas uso isso, quando clico na JTable : [/color]

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
	      public void valueChanged(ListSelectionEvent e) {
	    	    if (!e.getValueIsAdjusting()) {

                //A classe que você quer, com os parâmetros
	    	    	JFrame jiframe = new JFrame ();
	    	

	    	    }
	    }});
ken420

ela usa um botao para abrir nao o mouse.

M

worldsoft o form B ja esta em execulsão ele no caso e a tela principal e o form A é o form aonde pego a linha selecionada quero selecionar a linha no form A e clicar no botao e ele setar no jtextfield no form B

worldsoft

Cara olha só meio feio mais funciona.
Faz assim cria um parametro na classe (B). E ai quando você chamar o form B para execulsão, você pega os valores da Tabela selecionada e aloca os valores nesse parametro da classe (B). depois você cria um metodo na classe (A) que quando você retornar para ela, esse metodo vai até a classe (B) e pega os valores alocado nos parametros entendeu?

Obs: sua classe (B) teria que ser do tipo modal.

Ex:
private classe B(){
 String paramentro_A;
 String parametro_B;
 etc...
 
 public getTabelaSeleciona(){
    .
    .
    .
 }

}
 
private classe A(){
 
 public meus_metodos(){
   new Classe_B().setVisible(new JFrame(), true);
   getPegaParametrosClasseB();
 }

 private void getPegaParametrosClasseB(){
      .
      .
      .
 }

}
Metaleiro
Metaleiro:
[color=darkblue]Não sei se é isso que você precisa, mas uso isso, quando clico na JTable : [/color]
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
	      public void valueChanged(ListSelectionEvent e) {
	    	    if (!e.getValueIsAdjusting()) {

                //A classe que você quer, com os parâmetros
	    	    	JFrame jiframe = new JFrame ();
	    	

	    	    }
	    }});

[color=darkblue] No método que criei acima com o clique do mouse, usando TableModel eu faço quase isso, você quer pegar os valores da célula clicada, passar para um select, isso com o botão :[/color]

//Pega os valores da table clicada
                javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();

                int[] selRows;
                selRows = table.getSelectedRows();
                Object value;

                //Aqui você trabalha da maneira que desejar
                for (int i= 0; i < 3 ; i++){
                   TableModel tm = table.getModel();
                   value = tm.getValueAt(selRows[0], i);
                   switch (i) {
                    case 0:
                       System.out.println("value.toString()");
                        break;
                   case 1:
                       System.out.println("value.toString()");
                        break;
                   case 2:
                       System.out.println("value.toString()");
                       break;
                    default:
                        break;
                    }

                 //Se quiser saber se os valores estão vindo corretos
                 System.out.println("Valores da JTable: " + value );
                }

             //Aqui você coloca no método para chamar o JInternalFrame
             JInternalFrame frame = new JInternalFrame(ListaDoQueVoceQuer);
             frame.setResizable(true);
             frame.setClosable(true);
             frame.setVisible(true);
              
             //Provavelmente você tem um JDesktopPane
             desktopPane.add(frame );

            //Depois usa o método dispose para fechar seu JInternalFrame  ou outra forma para outros componentes que você chamar

[color=darkblue]Eu uso dessa forma, se alguém conhecer outra forma fique a vontade [/color]

Criado 15 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 10
Participantes 5