Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».
Закрыт 10 месяцев назад.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;``
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class AppWindow extends JFrame implements ActionListener {
private JButton button_signin;
private JButton button_signup;
CardLayout layout;
public AppWindow() {
initialize();
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((int) dimension.getHeight() / 5, (int) dimension.getWidth() / 5);
setMinimumSize(new Dimension(500, 200));
setVisible(true);
}
private void initialize() {
setTitle("Application");
layout = new CardLayout();
setLayout(layout);
add(new SignInpanel(), "sign in");
add(new SignUppanel(), "sign up");
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int result = JOptionPane.showConfirmDialog(AppWindow.this, "Are u sure you want to exit?");
if (result == 0) {
dispose();
}
}
});
JPanel mainpanel = new JPanel(new FlowLayout());
JPanel panel_buttons = new JPanel(new GridLayout(2, 2));
button_signin = new JButton("SIGN IN");
button_signup = new JButton("SIGN UP");
panel_buttons.add(new Label("Sign in if you have account"));
panel_buttons.add(button_signin);
panel_buttons.add(new Label("If you don't have account, sign up"));
panel_buttons.add(button_signup);
mainpanel.add(panel_buttons);
add(mainpanel);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_signin) {
CardLayout layout = (CardLayout) getParent().getLayout();
layout.show(getParent(), "signin");
} else if (e.getSource() == button_signup) {
CardLayout layout = (CardLayout) getParent().getLayout();
layout.show(getParent(), "signup");
}
}
}
class SignInpanel extends AppWindow implements ActionListener {
private JPanel panelMain;
private JMenuBar menuBar;
private JMenu fileMenu;
// public SignInpanel() {
// execute();
// }
//
// public void execute() {
// menuBar = new JMenuBar();
// fileMenu = new JMenu("File");
//
// }
@Override
public void actionPerformed(ActionEvent e) {
}
}
class SignUppanel extends AppWindow implements ActionListener {
private JPanel panel_textfield;
private JPanel panel_buttons;
private JPanel main_panel;
private JButton button_save;
private JButton button_cancel;
private JTextField textField_name;
private JTextField textField_surname;
private JTextField textField_email;
public SignUppanel() {
start();
}
public void start() {
main_panel = new JPanel(new FlowLayout());
panel_textfield = new JPanel(new GridLayout(2, 2));
panel_buttons = new JPanel(new GridLayout(1, 3));
panel_textfield.add(new JLabel("Name "));
textField_name = new JTextField(10);
panel_textfield.add(textField_name);
panel_textfield.add(new JLabel("Surname "));
textField_surname = new JTextField(10);
panel_textfield.add(textField_surname);
panel_textfield.add(new JLabel("Email: "));
textField_email = new JTextField(10);
panel_textfield.add(textField_email);
panel_textfield.add(new JLabel("Login "));
panel_textfield.add(new JTextField(10));
panel_textfield.add(new JLabel("Password "));
panel_textfield.add(new JPasswordField(10));
panel_textfield.add(new JLabel("Confirm password "));
panel_textfield.add(new JPasswordField(10));
main_panel.add(panel_textfield);
button_save = new JButton("SAVE");
button_save.addActionListener(this);
panel_buttons.add(button_save);
button_cancel = new JButton("CANCEL");
button_cancel.addActionListener(this);
panel_buttons.add(button_cancel);
main_panel.add(panel_buttons);
add(main_panel);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_save) {
CardLayout cardLayout = (CardLayout) getParent().getLayout();
cardLayout.previous(getParent());
} else if (e.getSource() == button_cancel) {
CardLayout cardLayout = (CardLayout) getParent().getLayout();
cardLayout.first(getParent());
}
}
}
class Main
{
public static void main(String[] args) {
AppWindow appWindow= new AppWindow();
}
}
Похоже что Вы вставляете JFrame в JFrame:
class SignUppanel extends AppWindow implements ActionListener
add(new SignUppanel(), "sign up");
И похоже на рекурсию в конструкторе - для построения AppWindow нужен SignUppanel и наоборот
Продвижение своими сайтами как стратегия роста и независимости