Chamar JFrame no ActionPerformed de um botao

5 respostas
dionlan

Boa tarde.

Gostaria de adicionar um JTable a um JFrame quando aperto um botao, consegui beleza, mas acontece que nao to conseguindo setar os valores da tabela nos textfields de um outro JFrame.
Ou seja, tenho dois frames e um deles tem a tabela e o outro tem os textfields.

private void jTNomesMouseClicked(java.awt.event.MouseEvent evt) {                                     

        int linha = jTNomes.getSelectedRow();

        NomesAcao an = new NomesAcao();
        //seleciona a linha
        an.setCodigo(jTNomes.getValueAt(linha, 0).toString().trim());
        an.setNomeEmpresa(jTNomes.getValueAt(linha, 1).toString().trim());

        tf_nome.setText(acao.getNomeAcao().trim()); //esse textfield está em outro frame, aqui dá erro, é claro
        tf_nomeEmpresa.setText(acao.getNomeEmpresa().trim()); //esse textfield está em outro frame, aqui dá erro, é claro

Obrigadão.

5 Respostas

ViniGodoy
dionlan

nao entendi direito por conta do jinternalframe...

Tentei fazer assim na tela de cadastro no netbeans:
public JTextField getTextField () {
        return tf_nome;
    }

Aí em um outro jframe queria passar para esse tf_nome uma linha da tabela com o mouseclicked:

int linha = jTNomes.getSelectedRow();

        NomesAcao an = new NomesAcao();
        //seleciona a linha
        an.setCodigo(jTNomes.getValueAt(linha, 0).toString().trim());
      //  an.setNomeEmpresa(jTNomes.getValueAt(linha, 1).toString().trim());

        JTextField as = new JTextField();
        CadastroAcao ca = new CadastroAcao();

         as = ca.getTextField();
         as.setText(an.getCodigo().trim());

Nem precisa falar que sou iniciante né? Dá um help aê. :?

Obrigadão de novo!

ViniGodoy

É melhor que seu outro frame seja um JDialog modal. Assim ficará fácil saber quando o outro JFrame fechou.

Outra coisa, você não deveria chamar o getValueAt da tabela, ou do tablemodel diretamente. Use o método get() do seu próprio tablemodel. Mas claro, só é possível fazer direito se você não usar o DefaultTableModel.

Em todo caso, deveria ficar assim:
nt linha = jTNomes.getSelectedRow();  
NomesAcao an = new NomesAcao();  
//seleciona a linha  
an.setCodigo(jTNomes.getValueAt(linha, 0).toString().trim());  
an.setNomeEmpresa(jTNomes.getValueAt(linha, 1).toString().trim());  
  
JTextField as = new JTextField();  
CadastroAcao ca = new CadastroAcao(an.getCodigo().trim());  
ca.setVisible(true);

Dê uma estudada no exemplo que passei. Acho que você desistiu muito rápido. Até pq, mesmo que tenha um JInternalFrame lá, o código o internalframe deve ser praticamente idêntico ao de um JFrame comum.

Não vale usar o fato de ser iniciante como desculpa pra ser preguiçoso.

dionlan

ué cara, disse que nao tinha entendido direito, apenas isso.

mas vlw ae, apesar de nao ter prestado aqui!

dionlan

Caso alguém tenha a mesma dúvida e acabe chegando a esse tópico, foi resolvido da seguinte maneira:
Criei um botão no JFrame (CadastroAcao) que tem o jtextfield (tf_nome) que quero ter acesso em outra JFrame (AcoesNomes);
Nesse botão chamei o outro JFrame (AcoesNomes):

AcoesNomes an = new AcoesNomes(this); //passando como parametro o proprio JFrame (this) an.setVisible(true);

Além disso, um metodo que retorna o jtextfield que tenho interesse:

public JTextField getTf_nome (){ return tf_nome; }

No outro JFrame, faz-se um construtor da seguinte maneira:

public AcoesNomes(CadastroAcao cadastro) { this(); this.cadastro = cadastro; }

Agora esse cadastro é referencia para o outro JFrame e posso acessar o metodo getTf_nome():

cadastro.getTf_nome().setText(na.getCodigo().trim());

No meu caso o objetivo era quando selecionar uma linha de uma tabela, essa informação for setada no tf_nome…

faloras!

Criado 6 de janeiro de 2011
Ultima resposta 10 de jan. de 2011
Respostas 5
Participantes 2