2016-12-03 114 views
0

当我添加:this.dispose()不工作,关闭一个JFrame

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

是一个JFrame你正在尝试关闭程序? –

+0

@ΦXocę웃Пepeúpaツ我已经添加了框架的一部分代码,我希望你能帮助我发现问题。 –

+0

@ΦXocę웃Пepeúpaツ您好我的朋友,请帮忙吗?我尝试了你对我说的话,但它不起作用。 –

回答

1

我会通过窗口假设你的意思的JFrame:

然后执行:

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

不适用于我:(我编辑了我的初始职位代码,简短,我希望你能帮助我。 –