Note that there are some explanatory texts on larger screens.

plurals
  1. POhow to close a frame when button clicks
    primarykey
    data
    text
    <p>I am new to Java Swing. I am creating a frame with some components.</p> <p>I have to close the frame and open another frame when the button is clicked. I had tried <code>setVisible(false)</code> but it only hides the frame, not closing it. When I use <code>System.exit(0)</code>, it closed all the frames.</p> <p>I had tried in another way, i.e. add all the components to panel, and add the panel at first. When the frame has to close I just remove those components in actionListener and add the other components for the corresponding next process.</p> <p>My entire code is as follows:</p> <pre><code>package JavaApp; import java.awt.Component; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.IllegalBlockSizeException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Login extends JFrame { public static JLabel labelUser; public static JLabel labelPass; public static JTextField textFieldUser; public static JPasswordField passwordField; public static JButton clear; public static JButton buttonLogin; public static JButton ChangePassword; public static JButton MasterKey; public static JButton AppKey; public static JPanel panelGnereate; public static JPanel panelLogin; public static JFrame frame; public static JLabel UserName; public static JTextField UserTxt; public static JButton GenerateKey; public static JPanel panelMaster; private static void designUI() { frame = new JFrame("Instalation"); frame.setLayout(new GridLayout(2, 1)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panelLogin = new JPanel(); panelLogin.setLayout(null); labelUser = new JLabel("Enter UserName"); textFieldUser = new JTextField(10); labelPass = new JLabel("Enter Password"); passwordField = new JPasswordField(10); buttonLogin = new JButton("Login"); clear = new JButton("Cancel"); panelLogin.add(buttonLogin); panelLogin.add(clear); panelLogin.add(labelUser); panelLogin.add(textFieldUser); panelLogin.add(labelPass); panelLogin.add(passwordField); textFieldUser.setBounds(200, 120, 100, 20); labelUser.setBounds(50, 120, 120, 20); labelPass.setBounds(50, 150, 120, 20); passwordField.setBounds(200, 150, 100, 20); buttonLogin.setBounds(70, 180, 100, 20); clear.setBounds(200, 180, 100, 20); buttonLogin.addActionListener(actionEvent); clear.addActionListener(actionEvent); frame.add(panelLogin); //Login frame ends... //Gnereate frame starts here.. panelGnereate = new JPanel(); panelGnereate.setLayout(null); ChangePassword = new JButton("Change Password"); MasterKey = new JButton("Create Master Key"); AppKey = new JButton("Create Application key"); panelGnereate.add(ChangePassword); panelGnereate.add(MasterKey); panelGnereate.add(AppKey); ChangePassword.setBounds(150, 100, 200, 25); MasterKey.setBounds(150, 150, 200, 25); AppKey.setBounds(150, 200, 200, 25); ChangePassword.addActionListener(actionEvent); MasterKey.addActionListener(actionEvent); AppKey.addActionListener(actionEvent); //Gnerate Frame ends here.. //MasterKey Generate Starts Here.. panelMaster = new JPanel(); panelMaster.setLayout(null); UserName = new JLabel("Text"); UserTxt = new JTextField(20); GenerateKey = new JButton("Generate Key"); panelMaster.add(UserName); panelMaster.add(UserTxt); panelMaster.add(GenerateKey); UserName.setBounds(150, 150, 50, 25); UserTxt.setBounds(220, 150, 100, 25); GenerateKey.setBounds(180, 180, 150, 25); GenerateKey.addActionListener(actionEvent); frame.setSize(500, 500); frame.setVisible(true); } public static void main(String args[]) { designUI(); } private static ActionListener actionEvent = new ActionListener() { public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if ("Login".equals(action)) { System.out.println("Login action" + e.getActionCommand()); if ("".equals(textFieldUser.getText()) || "".equals(passwordField.getText())) { JOptionPane.showMessageDialog(null, "Enter Both UserName and Password"); } else if ("admin".equals(textFieldUser.getText()) &amp;&amp; "admin".equals(passwordField.getText())) { System.out.println("login value" + textFieldUser.getText() + " " + passwordField.getText()); frame.remove(panelLogin); frame.add(panelGnereate); frame.setVisible(true); } else { JOptionPane.showMessageDialog(null, "Wrong Password"); } } else if ("Cancel".equals(action)) { System.out.println(e.getActionCommand()); System.exit(0); } else if ("Change Password".equals(action)) { } else if ("Create Master Key".equals(action)) { frame.remove(panelGnereate); frame.add(panelMaster); frame.setVisible(true); } else if ("Create Application key".equals(action)) { System.out.println("Message " + UserTxt.getText()); frame.setVisible(false); }else if("Generate Key".equals(action)) { try { new GenerateTxt(UserTxt.getText()); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalBlockSizeException ex) { Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); } frame.remove(panelMaster); frame.add(panelGnereate); frame.setVisible(true); } } ; }; } </code></pre> <p>It's not working for throughout the process. When I click the master key it showing relevant textbox after clicking genearteKey it showing same panel not the previous one. But when I am moving the mouse over there it is showing the components of the both panels.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload