Galera, sou novo por aqui mas não no java(mais ou menos 1 ano) e ainda sim estou enfrentando alguns erros. Por exemplo, estou com um problema num projeto meu que é o seguinte.
No Lugar do JOptionPane eu criei uma classe que será um formulário com fundo personalizado que exibirá uma mensagem como se fosse um JOptionPane, e quando ele clica no botao tem que ocorrer o seguinte: fechar o JDialog Atual, Fechar o JFrame do MenuPrincipal e Abrir o JDialog da tela de Login. Bom a única coisa que ele não faz e fechar o JFrame do MenuPrincipal ele fecha a tela que representa o JOptionPane e abre a tela de Login mas não fechar o JFrame do MenuPrincipal.
Este é o código:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.border.Border;
import static java.awt.GraphicsDevice.WindowTranslucency.*;
public class Mensagem extends JDialog{
JButton btnSim, btnNao;
JLabel lblMsg, lblImgFundo;
String[] div;
String mensagemPronta = “”;
JTextArea txtmsg;
public Mensagem(String mensagem, int tipo, String lugar){
this.setSize(385, 228 );
this.setModal(true); //mensagem é o atributo que recebe o texto da mensagem
this.setLocationRelativeTo(null); //tipo é o atributo que recebe o tipo da mensagem a ser exibida CONFIRM ou MESSAGE
this.setResizable(false); //lugar é o atributo que recebe um texto da onde que foi instanciado um objeto desta classe pra fazer a verificação e decidir o que vai no evento deste botao
this.setLayout(null);
this.setTitle(" Mensagem do Sistema");
btnSim = new JButton("Sim");
btnSim.setBounds(237, 149, 64, 38 );
btnSim.setVisible(false);
this.add(btnSim);
btnNao = new JButton("Não");
btnNao.setBounds(305, 149, 64, 38 );
btnNao.setVisible(false);
this.add(btnNao);
txtmsg = new JTextArea();
txtmsg.setBounds(90,50,278,80 );
txtmsg.setEditable(false);
txtmsg.setLineWrap(true);
txtmsg.setBorder(null);
txtmsg.setOpaque(false);
txtmsg.setText(mensagem);
this.add(txtmsg);
lblMsg = new JLabel(mensagemPronta);
lblMsg.setBounds(90, 50, 490, 15 );
//this.add(lblMsg);
lblImgFundo = new JLabel();
lblImgFundo.setBounds(0,0,400,200 );
this.add(lblImgFundo);
if(tipo == 0){
lblImgFundo.setIcon(new ImageIcon("src/Imagens/Fundos/confirm.png"));
btnSim.setVisible(true);
btnNao.setVisible(true);
verificandoLocal_0(lugar);
}else{
lblImgFundo.setIcon(new ImageIcon("src/Imagens/Fundos/message.png"));
btnNao.setText("OK");
btnNao.setVisible(true);
verificandoLocal_1(lugar);
}
}
public void verificandoLocal_0(String local){
btnNao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
if(local.equals("MenuPrincipal_0")){
btnSim.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
}
//o problema ta aqui, dentro deste if
if(local.equals("MenuPrincipal_1")){
btnSim.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
MenuPrincipal menu = new MenuPrincipal();
menu.setVisible(false);
Login app = new Login();
app.setVisible(true); //ja troquei a ordem mas nada adiantou
}
});
}
//e termina aqui
if(local.equals("Login")){
btnSim.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}
public void verificandoLocal_1(String local){
btnNao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
if(local.equals("Login_1")){
MenuPrincipal app = new MenuPrincipal();
app.setVisible(true);
}
}
}
espero que voces me ajudem! obrigado desde já