Переключение между JPanel (вход, регистрация и другие панели) - Java
Формулировка задачи:
хочу создать фрейм приложения где переключаются панели входа, регистрации и так далее, но выскакивает исключение....помогите пожалуйста разобраться в ошибке
package frame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestFrame extends JFrame
{
public TestFrame()
{
//создается фрейм
JFrame frame=new JFrame("ShellTest");
frame.setSize(400, 250);
frame.setLocation(350, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//создается вторая панель (на которую надо перейти если совпали логин и пароль)
JPanel panel2=new JPanel();
panel2.add(new JLabel("HELLO"));
//создается третья панель для регистрации пользователя
JPanel panel3=new JPanel();
panel3.add(new JLabel("Registration"));
//создается первая панель с полями для входа в приложение
JPanel panel1=new JPanel();
panel1.setLayout(new BorderLayout());
JPanel logPanel = new JPanel();
logPanel.setLayout(new GridLayout(2,2));
logPanel.add(new JLabel("Login:"));
JTextField login=new JTextField("");
logPanel.add(login);
logPanel.add(new JLabel("Password:"));
JPasswordField password=new JPasswordField("");
logPanel.add(password);
//кнопка подверждение входа, если логин и пароль правельные
JPanel buttonPanel=new JPanel();
JButton logButton=new JButton("Intra");
logButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
CardLayout cl = (CardLayout) (panel2.getLayout());
cl.show(panel2, ((JButton) event.getSource()).getText());
}
});
buttonPanel.add(logButton);
//кнопка регистрации, перекидывает на панель регистрации
JButton registrareButton=new JButton("Inregistrare");
registrareButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
CardLayout cl = (CardLayout) (panel1.getLayout());
cl.show(panel1, ((JButton) event.getSource()).getText());
}
});
buttonPanel.add(registrareButton);
panel1.add(logPanel, BorderLayout.NORTH);
panel1.add(buttonPanel, BorderLayout.CENTER);
JPanel mainPanel=new JPanel(new CardLayout());
mainPanel.add(panel1);
mainPanel.add(panel2, "Intra");
mainPanel.add(panel3, "Inregistrare");
frame.add(mainPanel);
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
new TestFrame();
}
});
}
}Решение задачи: «Переключение между JPanel (вход, регистрация и другие панели)»
textual
Листинг программы
public void actionPerformed(ActionEvent event)
{
CardLayout cl = (CardLayout) (mainPanel.getLayout());
cl.show(mainPanel, ((JButton) event.getSource()).getText());
}