pessoal eu to com um problema parecido… eu to querendo o seguinte, um determinado botão na primeira janela abre a segunda, se eu fechar a segunda, quero que feche só a segunda…até ai ok, eu usei JDialog ao inves de JFrame na construção da 2 janela.
a questão é a seguinte, eu tenho um botão no meio da janela (nas 2) que serve pra fecha a janela, ai no actionperformed, no metodo chamado por ele, eu coloquei um system.exit… o problema é que isso fecha as 2 janelas…e eu quero q só feche uma…
o que que eu devo colocar no corpo desse metodo ai pra fecha só a janela do botão que foi clicado? (se for apertado na segunda janela, quero que feche só ela, se for na primera pode até fecha as 2…)
to botando um codigo aki pra ilustra esse exemplo:
janela1
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Janela1 extends JFrame{
JButton abrir;
JButton fechar;
public static void main(String args[]){
Janela1 j=new Janela1();
j.setVisible(true);
j.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public Janela1() {
super("Janela 1");
setSize(500,500);
criaJanela();
}
public void criaJanela(){
setLayout(null);
Container tela = getContentPane();
abrir=new JButton("ABRIR");
fechar=new JButton("FECHAR");
abrir.setBounds(200,200,100,25);
fechar.setBounds(200,250,100,25);
tela.add(abrir);
tela.add(fechar);
abrir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
//ação feita ao apertar o botão
abre(e);
}
}
);
fechar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
//ação feita ao apertar o botão
fecha(e);
}
}
);
}
//metodo chamado ao apertar o botão, ele deve abrir a janela 2
public void abre(ActionEvent e){
Janela2 obj=new Janela2();
obj.criaJanela();
}
//botão de fecha a janela
public void fecha(ActionEvent e){
System.exit(0);
}
}
janela 2
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
public class Janela2 extends JDialog{
JButton abrir;
JButton fechar;
public static void main(String args[]){
Janela2 j=new Janela2();
j.setVisible(true);
j.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public Janela2() {
super();
setSize(500,500);
setVisible(true);
criaJanela();
}
public void criaJanela(){
setLayout(null);
Container tela = getContentPane();
abrir=new JButton("ABRIR");
fechar=new JButton("FECHAR");
abrir.setBounds(200,200,100,25);
fechar.setBounds(200,250,100,25);
tela.add(abrir);
tela.add(fechar);
abrir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
//ação feita ao apertar o botão
abre(e);
}
}
);
fechar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
//ação feita ao apertar o botão
fecha(e);
}
}
);
}
public void abre(ActionEvent e){
JOptionPane.showMessageDialog(null, "o botão foi apertado");
}
//kero que esse metodo só feche a janela que ele esta,
//e o system.exit ta fechando as 2
public void fecha(ActionEvent e){
System.exit(0);
}
}