Explanation and examples of Java card layout Manager
- 2020-09-28 08:51:50
- OfStack
The layout manager implemented by the CardLayout class is called the card layout manager and is used to manipulate the containers or components contained in the containers it manages. Each container or component added directly to its managed container is a card, the first container or component added is considered to be the first card, the last card added is the last card, and the first card is displayed on the first run. So let's look at an example of how it works.
Source:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class TestMain extends JFrame {
private JPanel pane = null; // The main JPanel the JPanel Layout management will be set to CardLayout
private JPanel p = null; // Put the button JPanel
private CardLayout card = null; // CardLayout Layout manager
private JButton button_1 = null; // on 1 step
private JButton button_2 = null; // Under the 1 step
private JButton b_1 = null, b_2 = null, b_3 = null; // 3 I can just flip it over to JPanel Buttons for components
private JPanel p_1 = null, p_2 = null, p_3 = null; // To switch the 3 a JPanel
public TestMain() {
super("CardLayout Test");
try {
// will LookAndFeel Set to Windows style
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception ex) {
ex.printStackTrace();
}
/** create 1 Three new card layouts with specified horizontal and vertical gaps */
card = new CardLayout(5, 5);
pane = new JPanel(card); // JPanel Layout management will be set to CardLayout
p = new JPanel(); // Construct put button JPanel
button_1 = new JButton("< on 1 step ");
button_2 = new JButton(" Under the 1 step >");
b_1 = new JButton("1");
b_2 = new JButton("2");
b_3 = new JButton("3");
b_1.setMargin(new Insets(2,2,2,2));
b_2.setMargin(new Insets(2,2,2,2));
b_3.setMargin(new Insets(2,2,2,2));
p.add(button_1);
p.add(b_1);
p.add(b_2);
p.add(b_3);
p.add(button_2);
p_1 = new JPanel();
p_2 = new JPanel();
p_3 = new JPanel();
p_1.setBackground(Color.RED);
p_2.setBackground(Color.BLUE);
p_3.setBackground(Color.GREEN);
p_1.add(new JLabel("JPanel_1"));
p_2.add(new JLabel("JPanel_2"));
p_3.add(new JLabel("JPanel_3"));
pane.add(p_1, "p1");
pane.add(p_2, "p2");
pane.add(p_3, "p3");
/** Here is a component that flips to the card layout for reference API The documents in the */
button_1.addActionListener(new ActionListener(){ // on 1 Step button action
public void actionPerformed(ActionEvent e) {
card.previous(pane);
}
});
button_2.addActionListener(new ActionListener(){ // Under the 1 Step button action
public void actionPerformed(ActionEvent e) {
card.next(pane);
}
});
b_1.addActionListener(new ActionListener() { // Flip straight to p_1
public void actionPerformed(ActionEvent e) {
card.show(pane, "p1");
}
});
b_2.addActionListener(new ActionListener() { // Flip straight to p_2
public void actionPerformed(ActionEvent e) {
card.show(pane, "p2");
}
});
b_3.addActionListener(new ActionListener() { // Flip straight to p_3
public void actionPerformed(ActionEvent e) {
card.show(pane, "p3");
}
});
this.getContentPane().add(pane);
this.getContentPane().add(p, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}
public static void main(String[] args) {
new TestMain();
}
}
Note: When using method next() or previous() graphics CARDS, all CARDS are displayed in a loop. For example, if the last card is currently displayed, then calling method next() will display the first card; If the first card is currently displayed, a call to the method previous() displays the last card.
I hope this article is helpful to you Java programming, at the same time, please continue to pay attention to this site!