this.dispose()无法关闭JFrame

时间:2016-12-03 07:09:59

标签: java eclipse jframe windowsbuilder

当我添加:

this.dispose();

窗口没有关闭,我该怎么办? 我将Eclipse与 windowsBuilder 一起使用。 我想关闭实际窗口打开另一个窗口。

我的代码:

public class Ventana_login extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = -7948060398287723741L;
    private JPanel contentPane;
    private JTextField txtUsuario;
    private JPasswordField txtContrasena;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Ventana_login frame = new Ventana_login();
                    frame.setVisible(true);
                    frame.setLocationRelativeTo(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Ventana_login() {
        setTitle("Sistema Gestor de Eventos v1.0");
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblBienvenidoAlSistema = new JLabel("Bienvenido");
        lblBienvenidoAlSistema.setHorizontalAlignment(SwingConstants.CENTER);
        lblBienvenidoAlSistema.setFont(new Font("Tahoma", Font.BOLD, 16));
        lblBienvenidoAlSistema.setBounds(10, 11, 424, 14);
        contentPane.add(lblBienvenidoAlSistema);

        JLabel lblUsuario = new JLabel("Usuario");
        lblUsuario.setHorizontalAlignment(SwingConstants.RIGHT);
        lblUsuario.setBounds(96, 79, 70, 14);
        contentPane.add(lblUsuario);

        JLabel lblContrasena = new JLabel("Contrase\u00F1a");
        lblContrasena.setHorizontalAlignment(SwingConstants.RIGHT);
        lblContrasena.setBounds(96, 109, 70, 14);
        contentPane.add(lblContrasena);

        txtUsuario = new JTextField();
        txtUsuario.setBounds(176, 76, 150, 20);
        contentPane.add(txtUsuario);
        txtUsuario.setColumns(10);

        JButton btnIniciarSesion = new JButton("Iniciar Sesi\u00F3n");
        btnIniciarSesion.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try {
                    Dato_login d_lgn = new Dato_login();
                    Logica_login l_lgn = new Logica_login();

                    d_lgn.setUsuario(txtUsuario.getText());
                    char[] contrasenaChar = txtContrasena.getPassword();
                    String contrasenaClean = new String(contrasenaChar);
                    d_lgn.setContrasena(contrasenaClean);

                    Dato_login d_lgn2 = l_lgn.login(d_lgn.getUsuario(), d_lgn.getContrasena());

                    if (Logica_login.resultado) {
                        Ventana_menu v_menu = new Ventana_menu();
                        v_menu.setVisible(true);
                        v_menu.setLocationRelativeTo(null);
                        Ventana_menu.lblPerfilActual.setText(d_lgn2.getPerfil());
                        Ventana_menu.lblApellidoActual.setText(d_lgn2.getApellido());
                        Ventana_menu.lblNombreActual.setText(d_lgn2.getNombre());
                        Ventana_menu.lblUsuarioActual.setText(d_lgn2.getUsuario());

                        if (Ventana_menu.lblPerfilActual.getText().equals("Portero")) {
                            Ventana_menu.btnMantenimiento_Eventos.setEnabled(false);
                            Ventana_menu.btnMantenimiento_Invitaciones.setEnabled(false);
                            Ventana_menu.btnMantenimiento_Invitados.setEnabled(false);
                            Ventana_menu.btnMantenimiento_Usuarios.setEnabled(false);
                            Ventana_menu.btnReportes.setEnabled(true);
                        } else {
                            Ventana_menu.btnMantenimiento_Eventos.setEnabled(true);
                            Ventana_menu.btnMantenimiento_Invitaciones.setEnabled(true);
                            Ventana_menu.btnMantenimiento_Invitados.setEnabled(true);
                            Ventana_menu.btnMantenimiento_Usuarios.setEnabled(true);
                            Ventana_menu.btnReportes.setEnabled(true);
                        }
                        this.dispose();
                    } else {
                        JOptionPane.showMessageDialog(contentPane, "Acceso Denegado", "Error", JOptionPane.ERROR_MESSAGE);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    JOptionPane.showMessageDialog(null, "Exception:\n" + e, "Error: Ventana_login", JOptionPane.ERROR_MESSAGE);
                    }
            }
        });
        btnIniciarSesion.setBounds(176, 163, 150, 30);
        contentPane.add(btnIniciarSesion);

1 个答案:

答案 0 :(得分:1)

我将在窗口中假设您的意思是JFrame:

然后做:

myJframe.dispatchEvent(new WindowEvent(myJframe, WindowEvent.WINDOW_CLOSING));