Abrir janela clicar num botão

16 respostas
B

//Gostaria de ajuda para abrir outra janela e fechar a atual quando clicar no botao aqui esta meu pré codigo

package urnacipa;

import java.awt.<em>;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.</em>;

import javax.swing.*;

import javax.swing.JLabel;

public class Candidatos extends JFrame {

public static void center(Component componente)  {
// Centraliza a janela de abertura no centro do desktop.

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

Rectangle r      = componente.getBounds();

// Dimensões da janela

int widthSplash = r.width ;

int heightSplash = r.height;
// calculo para encontrar as cooredenadas X e Y para a centralização da janela.
      int posX = (screen.width / 2) - ( widthSplash / 2 );
      int posY = (screen.height / 2) - ( heightSplash / 2 );

      //System.out.println("x:\n"+posX+"y"+posY);

      componente.setBounds(posX,posY,widthSplash,heightSplash);
}


public JPanel painel,painel3;
public JLabel janela = new JLabel("Escolha Candidato:");
ArrayList<String> frases = new ArrayList<String>();
public JTextField campo = new JTextField(10);
ImageIcon icone = new ImageIcon("logo.jpg");
public JLabel foto = new JLabel(icone);
int linhas;
public JTextArea campo2 = new JTextArea(13,12);


JButton botaop = new JButton("Inserir Candidatos");
JButton botao = new JButton(" OK ");
JButton botao1 = new JButton(" teste ");


Candidatos(){

    super("CIPA CARAIR");

    Adiciona adiciona = new Adiciona();
    botaop.addActionListener(adiciona);

    this.painel = new JPanel();
    this.painel.setLayout(new FlowLayout());
   
    this.painel.add(janela);
    this.painel.add(campo);
    this.painel.add(botao);

    this.painel3 = new JPanel();
    this.painel3.setLayout(new FlowLayout());

    //pega a altura e largura
    //int altura = icone.getIconHeight();
   // int largura = icone.getIconWidth();

    this.painel3.add(foto);
    this.painel3.add(botaop);

 

    this.add(this.painel,BorderLayout.NORTH);
    this.add(this.painel3,BorderLayout.SOUTH);


}

public class Adiciona  implements ActionListener{


     public void actionPerformed(ActionEvent e)
     {

         //aqui não sei como abrir outra janela

     }
}

}

16 Respostas

B

Ja consegui resolver obrigado!!

Camillinha

Olá Pessoal estou iniciando em java e estou com muitas duvidas…
Se puderem me ajudar ficarei muito grata…
Uma delas é a respeito de chamar uma outra classe(JFrame) que criei quando aperto em um botão.
Ja fiz a ação nele e ele até chama esse Frame so que aparece o nome do Frame mas dentro está tudo vazio…
O que devo fazer???

P.S. dentro desse Frame que estou chamando coloquei todos os campos em Panels diferente.

Ironlynx

Camillinha , bem-vinda ao GUJ!

Poste o seu código aqui, usando as tags code que estão acima da sua caixa de texto para darmos uma olhada. :wink:

Anime

Oi Camillinha,

Bem estranho isso,por favor,poste seu código… :roll:

Camillinha

Esse é o Principal:

class Login extends JFrame{


        private JTextField tfLogin;
        private JLabel lbSenha;
        private JLabel lbLogin;
        private JButton btLogin;
        private JButton btCadastrar;
        private JButton btCancelar;
        private JPasswordField pfSenha;
        private JPanel jpPanel;
        private JLabel lbTexto;


        public Login(){
        super("Login");
        }

        public static void main(String args[]){

                new Login().exibir();
        }

        public void exibir(){


                LayoutManager layout = new GridLayout(1,1);

            jpPanel = new JPanel ();
            tfLogin = new JTextField(10);
            pfSenha = new JPasswordField(10);
            lbSenha = new JLabel ("Senha: ");
            lbLogin = new JLabel ("Login: ");
            btLogin = new JButton ("Logar");
            btCadastrar = new JButton ("Cadastrar-se");
            btCadastrar.setBounds(50,70,100,25);
            btCancelar = new JButton ("Cancelar");
            lbTexto = new JLabel("*Se você ainda não possui login, Cadastre-se");
            tfLogin.setBounds(100,30,120,25);
            pfSenha.setBounds(30,30,30,25);
            lbSenha.setBounds(30,75,30,25);
            lbLogin.setBounds(30,30,30,25);
            btLogin.setBounds(20,120,100,25);
            pfSenha.setBounds(100,75,120,25);
            btCancelar.setBounds(125,120,100,25);


            LayoutManager log = new FlowLayout(-1);
            JPanel pLog = new JPanel(log);
            pLog.add(lbLogin);
            pLog.add(tfLogin);
            jpPanel.add(pLog);

            LayoutManager sen = new FlowLayout(-1);
            JPanel pSen = new JPanel(sen);
            pSen.add(lbSenha);
            pSen.add(pfSenha);
            jpPanel.add(pSen);

//Eu chamo o outro aqui...

            [b]LayoutManager but = new FlowLayout();
            JPanel pBut = new JPanel(but);
            pBut.add(btCadastrar);
             btCadastrar.addActionListener(new ActionListener (){
                    public void actionPerformed(ActionEvent e){
                        CadUsuario cad1 = new CadUsuario();
                        cad1.setVisible(true);
                    }
            });[/b]            pBut.add(btCancelar);
                btCancelar.addActionListener(new ActionListener (){
                    public void actionPerformed(ActionEvent e){
                        System.exit(0);
                    }
                });
                
            pBut.add(btLogin);
            jpPanel.add(pBut);

            LayoutManager lab = new FlowLayout(-2);
            JPanel pLab = new JPanel(lab);
            pLab.add(lbTexto);
            jpPanel.add(pLab);

           
            

            add(jpPanel);
            setLocation(500,200);
            setSize(300,200);
            setVisible(true);
        }

}


Frame correspondente, Ta ai a construção dos Panels:

 LayoutManager lay = new FlowLayout(-1);
        JPanel pNome = new JPanel(lay);
        pNome.add(nome);
        pNome.add(text1);
        principalPanel.add(pNome);

        LayoutManager ape = new FlowLayout(-1);
        JPanel pApelido = new JPanel(ape);
        pApelido.add(apelido);
        pApelido.add(text8);
        principalPanel.add(pApelido);

        LayoutManager tele = new FlowLayout(-1);
        JPanel pTel = new JPanel(tele);
        
        
        pTel.add(telefone);
        pTel.add(text2);
        pTel.add(data);
        pTel.add(text3);
        principalPanel.add(pTel);
        

        LayoutManager end = new FlowLayout(-1);
        JPanel pEnd = new JPanel(end);
        pEnd.add(endereco);
        pEnd.add(text4);
        pEnd.add(num);
        pEnd.add(text5);
        principalPanel.add(pEnd);


        LayoutManager cid = new FlowLayout(-1);
        JPanel pCep = new JPanel(cid);
        pCep.add(cep);
        pCep.add(text6);
        pCep.add(cidade);
        pCep.add(text7);
        pCep.add(estado);
        principalPanel.add(pCep);

        LayoutManager but = new FlowLayout();
        JPanel pBot = new JPanel (but);
        pBot.add(limpar);
        pBot.add(ok);
        limpar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                text1.setText("");
                text2.setText("");
                text3.setText("");
                text4.setText("");
                text5.setText("");
                text6.setText("");
                text7.setText("");
                text8.setText("");
            }
        });
        principalPanel.add(pBot);



        setLocation(500,200); 
        add(principalPanel);
        setSize(400,300);
        setVisible(true);

}

Acho que Deu certo!

Anime

Ironlynx:
Camillinha , bem-vinda ao GUJ!

Poste o seu código aqui, usando as tags code que estão acima da sua caixa de texto para darmos uma olhada. :wink:

Viu o que o Irinlynx disse sobre colocar o código entre as tags Code,faça isso por favor. :wink:

Anime

Você deve fazer o código no evento actionPerformed do botão que está utilizando.

new nomeSeuFrame().setVisible(true);//aq chama o proximo
  dispose();// dispose vc vai usar se quiser fechar o atual
Camillinha

Ainda não deu certo.
Ele busca o Frame certo so que vem sem informação nenhuma e com uma resolução minuscula. Quando aumento ele esta em branco.

Anime

Camillinha:
Ainda não deu certo.
Ele busca o Frame certo so que vem sem informação nenhuma e com uma resolução minuscula. Quando aumento ele esta em branco.

Não aparece nenhum componente,vc está usando algum IDE para criar o layout?

Desculpe Camillinha,queria ajudar mas não estou entendendo seu código…

Camillinha

É não aparece nenhum componente…
Ah o Frame que chama é do tipo .java e o que deve aparecer tambem é .java.
Tem alguma coisa a ver[/url]???

Nicolas_Fernandes

Oi, Camilinha!

Como você tá usando Layouts específicos, ao terminar de colocar toda a codificação de componentes, adicione o código:

Assim, você diz para o formulário colocar tudo bonitinho na tela como você ordenou!
Tente assim e nos dê um reply!

:smiley:

Anime

Não.

Vc não respondeu se usou algum IDE …

Camillinha

Não utilizei nenhuma

Estou tentando o this.pack(); mas tambem não deu em nada.

Nicolas_Fernandes

Em que momento você tá usando o pack()?
Posta o trecho do código, por favor? :smiley:

carlosmaniero

Quando vc redimenciona o frame aparecem as imfomações?
porque já tive esse problema ai setei a altura e largura na hora de abrir o Jfram da uma olhada no meu código:

meuFrame.setVisible(true);
meuFrame.setSize(280,300);//Largura,Altura em pixels
Camillinha

Olá…
Perdoe-me pela demora na resposta é que esses dias estava sem tempo pra postar.
Bem, ai vai a resolução do problema…

No metodo que eu estava chamando de exibir(), modifiquei para mostrar() e criei um novo metodo exibir() que apenas continha a localização da janela e o setVisible(true) e dentro do mostrar() eu chamei o exibir();
Deu certinho;…

Mas muito Obrigada pela atenção!

Criado 9 de outubro de 2010
Ultima resposta 24 de out. de 2010
Respostas 16
Participantes 6