Abrir janela clicar num botão

//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.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.
;
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

     }
}

}

Ja consegui resolver obrigado!!

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.

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:

Oi Camillinha,

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

Esse é o Principal:

[code]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);

}[/code]

Acho que Deu certo!

[quote=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: [/quote]

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

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

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.

[quote=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.[/quote]

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…

É 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]???

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:

Não.

Vc não respondeu se usou algum IDE …

Não utilizei nenhuma

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

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

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

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!