title: JFrame Not Disposing
body: <p>I am attempting to dispose my JFrame on button click.  However, when I click the button everything executes except the JFrame doesn't close!  Why is this?  Is it a problem with another JFrame opening directly after it?</p>
  
  <pre><code>public static void login() {
      JFrame loginFrame = new JFrame();
      JPanel loginPanel = new JPanel();
      JButton loginButton = new JButton("Login");
      JLabel usernameText = new JLabel("Username:");
      JLabel passwordText = new JLabel("Password:");
      final JTextField usernameField = new JTextField(15);
      final JTextField passwordField = new JTextField(15);
      status.setForeground(Color.RED);
  
      new LoginBackground();
  
      loginPanel.add(usernameText);
      loginPanel.add(usernameField);
      loginPanel.add(passwordText);
      loginPanel.add(passwordField);
      loginPanel.add(loginButton, BorderLayout.CENTER);
      loginPanel.add(status);
      loginFrame.add(loginPanel);
  
      loginPanel.add(loginBackgroundLabel);
      loginFrame.add(loginPanel);
  
      loginFrame.repaint();
      loginFrame.setVisible(true);
      loginFrame.setSize(1200, 800);
  
      loginPanel.setLayout(null);
  
      usernameText.setSize(100, 100);
      passwordText.setSize(100, 100);
  
      usernameText.setFont(new Font("Serif", Font.PLAIN, 20));
      usernameText.setForeground(Color.white);
  
      passwordText.setFont(new Font("Serif", Font.PLAIN, 20));
      passwordText.setForeground(Color.white);
  
      loginBackgroundLabel.setLocation(0, 0);
      usernameText.setLocation(555, 230);
      passwordText.setLocation(555, 290);
      usernameField.setLocation(500, 300);
      passwordField.setLocation(500, 350);
      loginButton.setLocation(550, 400);
      status.setLocation(500, 450);
  
      loginPanel.revalidate();
      loginFrame.repaint();
  
      try {
          Thread.sleep(1000);
      } catch (InterruptedException e2) {
          e2.printStackTrace();
      }
  
      new Sound();
  
      login = false;
  
      loginButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              try {
                  Frame.loginFrame.setVisible(false);
                  Frame.loginFrame.dispose();
                  username = usernameField.getText();
                  password = passwordField.getText();
                  Connect.checkLogin();
                  Sound.clip.stop();
              } catch (SQLException e1) {
                  e1.printStackTrace();
              }
          }
      });
  }
  </code></pre>