Criar mais de uma janela

import java.awt.;
import java.awt.event.
;

import javax.swing.*;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;

public class Janela2 extends JFrame implements ActionListener{
VetPessoa vet=null;
private ImageIcon figura;
private JLabel labelComFigura;
private JButton sim,nao;

public Janela2 (){ 
	setTitle("Plano Empresa"); 
	setSize(180,100);
	setResizable(true); 
	setLayout (new FlowLayout(0));
	this.insereFigura();
	this.insereBotoes(); 
}

private void insereFigura(){ 
	this.labelComFigura = new JLabel("DESEJA REALMENTE SAIR?",this.figura,JLabel.CENTER); 
	this.labelComFigura.setFont(new Font ("ArialBlack", Font.BOLD,12)); 
	add(this.labelComFigura); 
} 
public void actionPerformed(ActionEvent evt) {  
	if (evt.getSource() == this.sim) 
		System.exit(0);
	if (evt.getSource() == this.nao)  
	this.dispose(); 
} 
private void insereBotoes(){ 
	//cria os botões 
	this.sim = new JButton ("Sim");
	this.nao = new JButton ("Não");
	//adiciona o listener aos botões 
	this.sim.addActionListener(this);
	this.nao.addActionListener(this);
	//adiciona os botões ao JFrame 
	add(this.sim); 
	add(this.nao); 
} 

}

Galera, fiz esse código para criar uma janela…
para criar uma segunda janela o que devo fazer?
é necessario criar uma nova classe?

Grato, Paulo Henrique Orind

onde vc for chamar uma nova janela apenas crie uma nova variável chamando a classe janela2.

Assim:

[code]Método_do_Clique_do_Botao(){

Janela2 novajanela = new Janela2();

novajanela.setVisible(true);

}[/code]

Aqui vai uma dica: Acho que mais tarde vc terá de se aventurar em uma “coisa” chamada SINGLETON… pesquisa na internet… é legal e extremamente necessário.

abraços,

[quote=diegobilhalva]onde vc for chamar uma nova janela apenas crie uma nova variável chamando a classe janela2.

Assim:

[code]Método_do_Clique_do_Botao(){

Janela2 novajanela = new Janela();

novajanela.setVisible(true);

}[/code]

Aqui vai uma dica: Acho que mais tarde vc terá de se aventurar em uma “coisa” chamada SINGLETON… pesquisa na internet… é legal e extremamente necessário.

abraços,
[/quote]
Sei que não é o objetivo real do topico, mas aproveitando a oportunidade,
diegobilhalva, já ouvi falar muito em singleton, alguns falam que é anti-pattern, outros que é padrão de projeto, a discussão rola solta, mas eu nunca tive que usar, então não tenho experiência…

Pra que serve o singleton :?:

Galera, a janela que estou querendo criar é totalmente diferente,
acho que precisaria de outro construtor
vao ser outros botões e tudo mais…
tem que criar uma nova classe?

Grato, Paulo Henrique Orind

Caro amigo drigo.angelo,

Com certeza não sou o “cara” mais certo para responder-lhe esta pergunta, aqui no fórum tem gente mais gabaritada que eu.

Sobre SINGLETON ele tem me ajudado muito, pois estou desenvolvendo um framework e uma forma de manter uma única instância da classe principal foi usar o SINGLETON. Para uma definição mais profiça leia http://pt.wikipedia.org/wiki/Singleton.

O mais fácil de entendê-lo e visualizando um código que usa ele. Aí vai: (Partes desse código eu peguei aqui no fórum mesmo, infelizmente não sei a quem dar crédito. Sorry. Boa parte eu desenvolvi)

OBS: O código abaixo cria um form do tipo MDI com menu dinâmico.

package audit.forms.Telecom;


import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import audit.classes.CriaMenu;
import audit.forms.SistemasDisp;

public class frmPrincipal extends JFrame {

    public static int tHori = 418;
    public static int tVert = 300;

    public static int idGrupoUsuarios;
    public static int idSistema;
    
/**
*
* MODELO SINGLETON
*
*/
    
    public static frmPrincipal p;

   //Isso é singleton... leia com calma que entende.
    public static frmPrincipal getInstancia(){
        if(p == null){
            p = new frmPrincipal(idGrupoUsuarios, idSistema);
        }

        return p;
    }

    public frmPrincipal(int idGrupoUsuarios, int idSistema) {
        initComponents();
        //idGrupo / idSistema
        CriaMenu cMenu = new CriaMenu(idGrupoUsuarios,idSistema);
        JMenuBar bar = new JMenuBar();
        bar = cMenu.jBar();
        setJMenuBar(bar);
    }

    @SuppressWarnings("unchecked")

    private void initComponents() {

        jDesk = new javax.swing.JDesktopPane();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setName("frmPrincipal"); // NOI18N
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/audit/forms/resources/images/telecom_fundo.png"))); // NOI18N
        jLabel1.setText("jLabel1");
        jLabel1.setBounds(0, 0, 1366, 768);
        jDesk.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jDesk, javax.swing.GroupLayout.DEFAULT_SIZE, 418, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jDesk, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
        );

        pack();
    }                        

    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        // TODO add your handling code here:
        frmPrincipal.p = null;
        SistemasDisp.getInstancia().setVisible(true);
    }                                  

     public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                getInstancia().setSize(tHori, tVert);
                getInstancia().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                java.awt.Toolkit toolkit= java.awt.Toolkit.getDefaultToolkit();
                Dimension scrSize= toolkit.getScreenSize();
                getInstancia().setLocation((scrSize.width-tHori)/2, (scrSize.height-tVert)/2);
                getInstancia().setExtendedState(frmPrincipal.MAXIMIZED_BOTH);
                getInstancia().setVisible(true);
            }
        });
    }

    public static JDesktopPane jDeskM(){
        return getInstancia().jDesk;
    }

                       
    private javax.swing.JDesktopPane jDesk;
    private javax.swing.JLabel jLabel1;
    

}

Espero ter ajudado.

Quanto ao nosso amigo Milhorim, por enquanto, brinque um pouco mais nas GUI’s. Respondendo sua pergunta: Sim (por enquanto, e apenas por enquanto) crie tudo novo. Você vai ver que o trabalho é desnecessário se você usar modelos mais dinâmicos. Como extraindo teus objetos diretamente de um banco de dados, por exemplo.

Se puder ajudar, precisarei saber mais detalhes de suas necessidades, podes mandar um email para mim. diego.bilhalva@gmail.com