Here is the code ...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class PanelDemo1 extends JFrame implements ActionListener
{
JTabbedPane tab;
CardLayout card;
JTextField tf1,tf2;
JLabel lb1,lb2;
JCheckBox c1,c2;
JPanel mainPanel;
JButton next,prev;
public PanelDemo1()
{
super("panel demo");
tab = new JTabbedPane();
tab.add("First Tab",firstPanel());
tab.add("Second Tab",secondPanel());
card = new CardLayout();
mainPanel = new JPanel();
mainPanel.setLayout(card);
getContentPane().add(tab);
// getContentPane().add(mainPanel);
}
public JPanel firstPanel()
{
JPanel pn1 = new JPanel();
tf1 = new JTextField(12);
tf2 = new JTextField(12);
pn1.add(tf1);
pn1.add(tf2);
next = new JButton();
next.setText("next");
next.addActionListener(this);
pn1.add(next);
return pn1;
}
public JPanel hidingPanel()
{
JPanel pn3 = new JPanel();
JButton btn = new JButton();
btn.setText("back");
btn.addActionListener(this);
pn3.add(btn);
return pn3;
}
public JPanel secondPanel()
{
JPanel pn2 = new JPanel();
lb1 = new JLabel("label1");
lb2 = new JLabel("label2");
prev = new JButton();
prev.setText("prev");
prev.addActionListener(this);
pn2.add(prev);
pn2.add(lb1);
pn2.add(lb2);
return pn2;
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand() == "next")
{
mainPanel.add(hidingPanel());
card.next(mainPanel);
}
}
public static void main(
String[] args)
{
PanelDemo1 pd = new PanelDemo1();
pd.setSize(500,400);
pd.setVisible(true);
pd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
if we click on next button i got this exception ...
java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string
at java.awt.CardLayout.addLayoutComponent(CardLayout.java:190)
at java.awt.Container.addImpl(Container.java:664)
at java.awt.Container.add(Container.java:307)
at PanelDemo1.actionPerformed(PanelDemo1.java:84)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)