La clase CardLayout administra los componentes de tal manera que solo un componente es visible a la vez. Trata cada componente como una tarjeta en el contenedor. Solo se ve una carta a la vez y el contenedor actúa como una pila de cartas. El primer componente agregado a un objeto CardLayout es el componente visible cuando el contenedor se muestra por primera vez.
Constructores:
- CardLayout(): se utiliza para crear un nuevo diseño de tarjeta con espacios de tamaño cero.
- CardLayout(int horizontalgap, int verticalgap): Se utiliza para crear una nueva clase CardLayout con los espacios horizontales y verticales especificados.
Métodos comúnmente utilizados:
- getLayoutAlignmentX(Container parent): Devuelve la alineación a lo largo del eje x.
- getLayoutAlignmentY(Container parent): Devuelve la alineación a lo largo del eje y.
- getVgap(): Se utiliza para obtener el espacio vertical entre los componentes.
- addLayoutComponent(Componente cm, Objeto cn): se utiliza para agregar el componente especificado a la tabla interna de nombres de este diseño de tarjeta.
- getHgap(): Se utiliza para obtener el espacio horizontal entre los componentes.
- toString(): Devuelve una representación de string del estado de este diseño de tarjeta.
- removeLayoutComponent(Componente cm): Se utiliza para eliminar el componente especificado del diseño.
Los siguientes programas ilustran la clase CardLayout:
- Programa 1: En el siguiente programa, estamos organizando varios componentes JLabel en un JFrame , cuya clase de instancia es » Cardlayout «. Creamos 3 componentes JButton llamados » bt1 « , » bt2 «, » bt3 » y luego los agregamos al JFrame usando el método add() . Establecemos el tamaño y la visibilidad del marco mediante el método setSize() y setVisible() . El diseño se establece mediante el método setLayout() .
Java
// Java program to illustrate the CardLayout Class import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.*; // class extends JFrame and implements actionlistener public class Cardlayout extends JFrame implements ActionListener { // Declaration of objects of CardLayout class. CardLayout card; // Declaration of objects of JButton class. JButton b1, b2, b3; // Declaration of objects // of Container class. Container c; Cardlayout() { // to get the content c = getContentPane(); // Initialization of object "card" // of CardLayout class with 40 // horizontal space and 30 vertical space . card = new CardLayout(40, 30); // set the layout c.setLayout(card); // Initialization of object "b1" of JButton class. b1 = new JButton("GEEKS"); // Initialization of object "b2" of JButton class. b2 = new JButton("FOR"); // Initialization of object "b3" of JButton class. b3 = new JButton("GEEKS"); // this Keyword refers to current object. // Adding Jbutton "b1" on JFrame using ActionListener. b1.addActionListener(this); // Adding Jbutton "b2" on JFrame using ActionListener. b2.addActionListener(this); // Adding Jbutton "b3" on JFrame using ActionListener. b3.addActionListener(this); // Adding the JButton "b1" c.add("a", b1); // Adding the JButton "b2" c.add("b", b2); // Adding the JButton "b1" c.add("c", b3); } public void actionPerformed(ActionEvent e) { // call the next card card.next(c); } // Main Method public static void main(String[] args) { // Creating Object of CardLayout class. Cardlayout cl = new Cardlayout(); // Function to set size of JFrame. cl.setSize(400, 400); // Function to set visibility of JFrame. cl.setVisible(true); // Function to set default operation of JFrame. cl.setDefaultCloseOperation(EXIT_ON_CLOSE); } }
Producción:
- Programa 2: En el siguiente programa, estamos organizando 4 componentes JLabel en un JFrame , cuya clase es » CardlayoutDemo «. Creamos 4 componentes JButton llamados » firstbtn « , » nextbtn «, » anteriorbtn «, » lastbtn » y 4 componentes JLabel llamados » jl1 «, » jl2 «, » jl3 » » jl4 «. Aquí también estamos creando 4 componentes JPanel llamados » jp1 «, » jp2 «, » jp3 «, » jp4 » y luego los agregamos alJFrame usando el método add() . Estableceremos el tamaño, la visibilidad y el título del marco utilizando los métodos setSize() , setVisible() y setTitle() respectivamente. El diseño se establece mediante el método setLayout() .
Java
// Java program to show Example of CardLayout. // in java. Importing different Package. import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; // class extends JFrame public class CardLayoutDemo extends JFrame { // Initialization the value of // current card is 1 . private int currentCard = 1; // Declaration of objects // of CardLayout class. private CardLayout cl; public CardLayoutDemo() { // Function to set visibility of JFrame setTitle("Card Layout Example"); // Function to set visibility of JFrame setSize(300, 150); // Creating Object of "Jpanel" class JPanel cardPanel = new JPanel(); // Initialization of object "c1" // of CardLayout class. cl = new CardLayout(); // set the layout cardPanel.setLayout(cl); // Initialization of object // "jp1" of JPanel class. JPanel jp1 = new JPanel(); // Initialization of object // "jp2" of CardLayout class. JPanel jp2 = new JPanel(); // Initialization of object // "jp3" of CardLayout class. JPanel jp3 = new JPanel(); // Initialization of object // "jp4" of CardLayout class. JPanel jp4 = new JPanel(); // Initialization of object // "jl1" of JLabel class. JLabel jl1 = new JLabel("Card1"); // Initialization of object // "jl2" of JLabel class. JLabel jl2 = new JLabel("Card2"); // Initialization of object // "jl3" of JLabel class. JLabel jl3 = new JLabel("Card3"); // Initialization of object // "jl4" of JLabel class. JLabel jl4 = new JLabel("Card4"); // Adding JPanel "jp1" on JFrame. jp1.add(jl1); // Adding JPanel "jp2" on JFrame. jp2.add(jl2); // Adding JPanel "jp3" on JFrame. jp3.add(jl3); // Adding JPanel "jp4" on JFrame. jp4.add(jl4); // Adding the cardPanel on "jp1" cardPanel.add(jp1, "1"); // Adding the cardPanel on "jp2" cardPanel.add(jp2, "2"); // Adding the cardPanel on "jp3" cardPanel.add(jp3, "3"); // Adding the cardPanel on "jp4" cardPanel.add(jp4, "4"); // Creating Object of "JPanel" class JPanel buttonPanel = new JPanel(); // Initialization of object // "firstbtn" of JButton class. JButton firstBtn = new JButton("First"); // Initialization of object // "nextbtn" of JButton class. JButton nextBtn = new JButton("Next"); // Initialization of object // "previousbtn" of JButton class. JButton previousBtn = new JButton("Previous"); // Initialization of object // "lastbtn" of JButton class. JButton lastBtn = new JButton("Last"); // Adding JButton "firstbtn" on JFrame. buttonPanel.add(firstBtn); // Adding JButton "nextbtn" on JFrame. buttonPanel.add(nextBtn); // Adding JButton "previousbtn" on JFrame. buttonPanel.add(previousBtn); // Adding JButton "lastbtn" on JFrame. buttonPanel.add(lastBtn); // add firstbtn in ActionListener firstBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // used first c1 CardLayout cl.first(cardPanel); // value of currentcard is 1 currentCard = 1; } }); // add lastbtn in ActionListener lastBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // used last c1 CardLayout cl.last(cardPanel); // value of currentcard is 4 currentCard = 4; } }); // add nextbtn in ActionListener nextBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // if condition apply if (currentCard < 4) { // increment the value of currentcard by 1 currentCard += 1; // show the value of currentcard cl.show(cardPanel, "" + (currentCard)); } } }); // add previousbtn in ActionListener previousBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // if condition apply if (currentCard > 1) { // decrement the value // of currentcard by 1 currentCard -= 1; // show the value of currentcard cl.show(cardPanel, "" + (currentCard)); } } }); // used to get content pane getContentPane().add(cardPanel, BorderLayout.NORTH); // used to get content pane getContentPane().add(buttonPanel, BorderLayout.SOUTH); } // Main Method public static void main(String[] args) { // Creating Object of CardLayoutDemo class. CardLayoutDemo cl = new CardLayoutDemo(); // Function to set default operation of JFrame. cl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Function to set visibility of JFrame. cl.setVisible(true); } }
Producción:
Nota: Es posible que los programas anteriores no se ejecuten en un IDE en línea. Utilice un compilador fuera de línea.
Referencia: https://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html
Publicación traducida automáticamente
Artículo escrito por Shivi_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA