Geralmente eu crio uma classe com o código da janela e depois na classe main por exemplo, digito o código de exibição dessa janela:
Janela obj = new Janela();
obj.setVisible(true);
Agora estou fazendo um exercício aki que eu tenho uma janela principal e e vários botões e quando clico
em um determinado botão, abre uma nova janela com a função do botão.
O que eu gostaria de saber é se tem como, quando eu clicar em um botão, a nova janela abrir na mesma na qual eu estou
e quando clicar em sair por exemplo, volte a janela antiga com os botões.
Bom se puderem me ajudar.
Grato
Ps… Qualquer dúvida sobre a minha pergunta, postem Ok.
Bem, não sei se é a melhor forma, mas você poderia fechar a janela principal ao abrir a segunda janela. E quando você clicar no botão sair, você chama a janela principal novamente.
E mais uma coisa, por exemplo, quando eu abro uma janela a partir de outra e as duas estão abertas, e
na nova janela aberta, tem um botão sair, qual o comando que tenho que usar para sair somente da segunda janela
e a outra continuar aberta, pois usando o comando acima eu não consegui não.!
Neste caso você está definindo a ação padrão ao fechar a janela. Ao clicar no “x” no canto superior direito é esta ação que será executada. De acordo com o código, ação será sair do sistema, ao fechar a janela.
Quanto as janelas que abrem através dos menus/botões. Trabalho com JDialog, não é a unica maneira, mas atende perfeitamente.
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.WindowConstants;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FramePrincipal extends JFrame {
public FramePrincipal() {
super("Tela Principal");
//Cria objeto para ser passado como paramentro para o setSize()
Dimension dimensao = new Dimension(800, 600);
//Configura o tamanho da tela.
this.setSize(dimensao);
//Configura o comportamento ao ser fechada a tela.
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//Cria o botão.
JButton botao = new JButton("JDialog");
//Cria a ação que será usada no botão.
ActionListener acao = new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Cria o dialog.
DialogExemplo dialog = new DialogExemplo();
//Ajusta a posição para exibição da tela, tendo como referencia, o proprio frame.
dialog.setLocationRelativeTo(FramePrincipal.this);
//Exibe o dialog.
dialog.setVisible(true);
}
};
// Adiciona, a ação no botão.
botao.addActionListener(acao);
//Adiciona o botão no frame.
this.add(botao);
}
//Executa a tela para ser exibida.
public static void main(String args[]) {
FramePrincipal frame = new FramePrincipal();
frame.setVisible(true);
}
}
Dialog:
import javax.swing.JDialog;
import java.awt.Dimension;
import javax.swing.WindowConstants;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DialogExemplo extends JDialog {
public DialogExemplo() {
super();
this.setTitle("Dialog de teste!");
Dimension dimensao = new Dimension(240, 160);
this.setSize(dimensao);
//Ajusta o comportamento padrão da tela para ser abandonada. Assim o frame ainda fica em execução, e o dialog apenas é destruido.
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//Configura o dialog como modal, neste caso, o frame não pode ser acessado sem fechar o dialog.
this.setModal(true);
JButton botao = new JButton("Fechar");
ActionListener acao = new ActionListener() {
public void actionPerformed(ActionEvent e) {
DialogExemplo.this.dispose();
}
};
botao.addActionListener(acao);
this.add(botao);
}
}