Versteckt sich ein frame in java auf eine Schaltfläche klicken
Ich versuche zu verstecken, einen Rahmen, sobald auf eine Schaltfläche geklickt wird. Den button "Registrieren" sollte öffnen Sie ein Bild, in dem ein Benutzer registrieren kann, und das funktioniert, aber ich versuche zu verstecken die früheren Rahmen, und ich kann nicht herausfinden, wie es zu tun.
Hier ist mein code:
MainPage.java
package Practice_1;
import java.awt.*;
import java.awt.Insets;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
*
* @author Ivan
*/
public class MainPage extends JPanel
{
JButton regButton, logButton, listButton;
JLabel homeMessage;
GridBagConstraints gbc = new GridBagConstraints();
public MainPage()
{
setLayout(new GridBagLayout());
gbc.insets = new Insets(5,5,5,5);
homeMessage = new JLabel("Please select an option below:");
gbc.gridx = 0;
gbc.gridy = 0;
add(homeMessage, gbc);
regButton = new JButton("Register");
gbc.gridx = 0;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
regButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
//Execute when button is pressed
//System.out.println("clicked");
RegisterPage regFrame = new RegisterPage();
JFrame register = new JFrame();
register.setTitle("Registration");
register.setSize(300,200);
register.setVisible(true);
register.add(regFrame);
new MainPage().setVisible(false); / THIS DOES NOT WORK
}
});
add(regButton, gbc);
logButton = new JButton("Log in");
gbc.ipadx = 40;
gbc.gridx = 0;
gbc.gridy = 2;
add(logButton, gbc);
listButton = new JButton("Customer list");
gbc.ipadx = 40;
gbc.gridx = 0;
gbc.gridy = 3;
add(listButton, gbc);
JFrame home = new JFrame();
home.setTitle("Main menu");
home.setSize(300,200);
home.setResizable(false);
home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
home.setVisible(true);
home.add (mainFrame);
}
public static void main(String[] args) {
//TODO code application logic here
MainPage mainFrame = new MainPage();
}
}
RegisterPage.java
package Practice_1;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author Ivan
*/
public class RegisterPage extends JPanel {
//JButton regButton, logButton, listButton;
JLabel homeMessage;
GridBagConstraints gbc = new GridBagConstraints();
public RegisterPage()
{
setLayout(new GridBagLayout());
gbc.insets = new Insets(5,5,5,5);
homeMessage = new JLabel("Register new user:");
gbc.gridx = 0;
gbc.gridy = 0;
add(homeMessage, gbc);
}
}
- Dies kommt immer wieder. Verwenden Sie kein anderes JFrame. Haben Sie im dialog-Fenster ein JDialog.
- Siehe Die Verwendung von Mehreren JFrames, Gute/Schlechte Praxis? für mehr info. auf die Frage verwiesen wird, die von @HovercraftFullOfEels.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend Ihrem code, den Sie versuchen zu verstecken
JPanel
stattJFrame
. Mein Vorschlag ist, verwenden Sieals die Instantiierung der
JPanel
wie diese:sowie zum hinzufügen von Komponenten auf das panel. Verstecken Sie Ihre Hauptseite können Sie anrufen:
aber es wäre besser, wenn Sie verwenden:
MainPane.this