JFrame whose content changes as we click on the different buttons

OneMoreError picture OneMoreError · Mar 26, 2013 · Viewed 8.4k times · Source

I am using Java's Swing here to make a UI application. I have a created a JFrame, with some buttons. When I click on this button, I want a new JFrame with some different content at this place. However, I do not want a new JFrame to load here.

One approach, I know is of setting the visbility of the second JFrame to be True in the actionPerformed(ActionEvent obj) method of the button in the first JFrame. But it again loads a new JFrame and I don't want that.

public class FirstUI extends JFrame {
    JButton but1;

    public FirstUI(){
        but1= new JButton("Click here");
        add(but1);

    XYZ obj= new XYZ():
    but1.addActionListener(obj);
    }

    public class XYZ implements ActionListener{
        public void actionPerformed(ActionEvent obj1){

             // WHAT TO DO HERE  
        } 
    }
}

I only want a single JFrame whose content changes as we click on different buttons. How can I achieve that ?

Answer

Peter Lang picture Peter Lang · Mar 26, 2013

Have a look at CardLayout, this would allow to switch the content of your frame:

A CardLayout object is a layout manager for a container. It treats each component in the container as a card. Only one card is visible at a time, and the container acts as a stack of cards. The first component added to a CardLayout object is the visible component when the container is first displayed.

See How to Use CardLayout for an example.