No código abaixo, na linha (40) dentro do listener do evento é executado o código:
new Teste();
Se eu colocar um breakpoint nessa linha a parada eh executada ao clicar no botao da tela principal (Teste)
e um dialog se abrirah. O mais estranho eh que ao fechar esse dialogo, o breakpoint serah novamente
acionado nessa mesma linha. Ou seja o fechamento do dialogo esta produzindo o mesmo evento de
clic do botao na tela principal. Estah duplicando o evento original.
Ja tentei usar mouseclicked para ver se mudava algo e nao importa, ao fechar o dialogo, o evento eh
disparado exatamente como o original.
Alguem tem alguma ideia?
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class Janela2 extends JFrame {
private JButton button = new JButton("Abrir JDialog");
public Janela2() {
super("Teste JDialog");
init();
}
private void init() {
montarJanela();
montarJDialog();
mostrarJanela();
}
private void montarJanela() {
setLayout(new FlowLayout());
setSize(500, 500);
montarJDialog();
}
private void mostrarJanela() {
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void montarJDialog() {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Teste();
}
});
add(button);
}
public static void main(String[] args) {
new Janela2();
}
}
class Teste extends JDialog {
private JButton button;
public Teste() {
super(new JFrame(), "Teste", true);
init();
}
private void init() {
montarJanela();
montarComponentes();
mostrarJanela();
}
private void montarJanela() {
setSize(200, 200);
setLayout(new FlowLayout());
}
private void mostrarJanela() {
setLocationRelativeTo(this.getParent());
setVisible(true);
setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
}
private void montarComponentes() {
button = new JButton("Adicionar");
add(button);
}
}