GroupLayout es un LayoutManager que agrupa jerárquicamente los componentes y los organiza en un Contenedor. La agrupación se realiza utilizando las instancias de la clase Group. Generalmente se utiliza para desarrollar constructores de GUI (interfaz gráfica de usuario) como Matisse, el constructor de GUI proporcionado con NetBeans IDE. GroupLayout Class admite dos tipos de grupos:
- Un grupo secuencial coloca sus elementos secundarios secuencialmente, uno tras otro.
- Un grupo paralelo alinea sus elementos secundarios de diferentes maneras.
Constructor de la clase:
- GroupLayout (host del contenedor): se utiliza para crear un GroupLayout para el contenedor especificado.
Métodos comúnmente utilizados:
- addLayoutComponent(Component comp, Object cons): notifica que se ha agregado un componente al contenedor principal.
- getHonorsVisibility(): Devuelve si se considera la visibilidad del componente al dimensionar y posicionar los componentes.
- maximumLayoutSize(Container parent): Devuelve el tamaño máximo para el contenedor especificado.
- getLayoutAlignmentX(a lo largo del eje horizontal): Devuelve la alineación a lo largo del eje x.
- minimalLayoutSize(Container parent): Devuelve el tamaño mínimo para el contenedor especificado.
- getLayoutStyle(): Devuelve el LayoutStyle utilizado para calcular el espacio preferido entre los componentes.
Los siguientes programas ilustran el uso de la clase GroupLayout:
- El siguiente programa ilustra el uso de GropuLayout organizando los componentes JLabel en un JFrame , cuya clase de instancia es » GropuLayoutDemo «. Creamos 2 componentes JLabel llamados » headerLabel «, » statusLabel » y creamos 3 componentes JButton llamados » btn1 « , » btn2 «, » btn3 » y luego los agregamos al JFrame usando el método add() . Establecemos el tamaño y la visibilidad del marco usando el método setSize() y setVisible() . El diseño se establece mediante el método setLayout() .
Java
// Java Program to illustrate the GroupLayout class import java.awt.*; import java.awt.event.*; import javax.swing.*; // creating a class GroupLayoutDemo public class GroupLayoutDemo { // Declaration of objects // of JFrame class private JFrame mainFrame; // Declaration of objects // of JLabel class private JLabel headerLabel, statusLabel, msglabel; // Declaration of objects // of JPanel class private JPanel controlPanel; // create a class GroupLayoutDemo public GroupLayoutDemo() { // used to prepare GUI prepareGUI(); } public static void main(String[] args) { // Creating Object of "GroupLayoutDemo" class GroupLayoutDemo GroupLayoutDemo = new GroupLayoutDemo(); // to show the group layout demo GroupLayoutDemo.showGroupLayoutDemo(); } private void prepareGUI() { // Initialization of object // "mainframe" of JFrame class. mainFrame = new JFrame("Java GroupLayout Examples"); // Function to set the // size of JFrame. mainFrame.setSize(400, 400); // Function to set the // layout of JFrame. mainFrame.setLayout(new GridLayout(3, 1)); // Initialization of object // "headerLabel" of JLabel class. headerLabel = new JLabel("", JLabel.CENTER); // Initialization of object // "statusLabel" of JLabel class. statusLabel = new JLabel("", JLabel.CENTER); // Function to set the // size of JFrame. statusLabel.setSize(350, 100); // to add action WindowListner in JFrame mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); // Initialization of object // "controlPanel" of JPanel class. controlPanel = new JPanel(); // Function to set the // layout of JFrame. controlPanel.setLayout(new FlowLayout()); // Adding Jlabel "headerlabel" // on JFrame. mainFrame.add(headerLabel); // Adding JPanel "controlPanel" // on JFrame. mainFrame.add(controlPanel); // Adding JLabel "statusLabel" // on JFrame. mainFrame.add(statusLabel); // Function to set the visible of JFrame. mainFrame.setVisible(true); } private void showGroupLayoutDemo() { // Function to set the text // on the header of JFrame. headerLabel.setText("Layout in action: GroupLayout"); // Creating Object of // "Panel" class JPanel panel = new JPanel(); // Function to set the size of JFrame. panel.setSize(200, 200); // Creating Object of // "layout" class GroupLayout layout = new GroupLayout(panel); // it used to set Auto // Create Gaps layout.setAutoCreateGaps(true); // it used to set Auto // Create Container Gaps layout.setAutoCreateContainerGaps(true); // Creating Object // of "btn1" class JButton btn1 = new JButton("Button 1"); // Creating Object of // "btn2" class JButton btn2 = new JButton("Button 2"); // Creating Object of "btn3" class JButton btn3 = new JButton("Button 3"); // It used to set the // Horizontal group layout.setHorizontalGroup(layout.createSequentialGroup() // Adding the JButton "btn1" .addComponent(btn1) // Adding the sequential Group .addGroup(layout.createSequentialGroup() // Adding the Parallel Group .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) // Adding the JButton "btn2" .addComponent(btn2) // Adding the JButton "btn3" .addComponent(btn3)))); // set the vertical layout group layout.setVerticalGroup(layout.createSequentialGroup() // Adding the JButton "btn1" .addComponent(btn1) // Adding the JButton "btn2" .addComponent(btn2) // Adding the JButton "btn3" .addComponent(btn3)); // Function to set the Layout of JFrame. panel.setLayout(layout); // Adding the control panel controlPanel.add(panel); // Function to set the visible of JFrame. mainFrame.setVisible(true); } }
Producción:
- El siguiente programa ilustra el uso de GropuLayout organizando los componentes JLabel en un JFrame , cuya clase de instancia es » GropuLayoutExample «. Creamos 1 JLabel , 1 JTextField y 2 componentes JCheckbox . También se crean dos componentes JButton como » FindButton «, » CancelButton » y luego se agregan al JFrame usando el método add(). El diseño se establece mediante el método setLayout() .
Java
// Java Program to illustrate the GroupLayout class import java.awt.Component; import javax.swing.*; import static javax.swing.GroupLayout.Alignment.*; // creating a class GroupLayoutExample public class GroupLayoutExample { // Main Method public static void main(String[] args) { // Function to set the Default Look // And Feel Decorated of JFrame. JFrame.setDefaultLookAndFeelDecorated(true); // Creating Object of // "JFrame" class JFrame frame = new JFrame("GroupLayoutExample"); // Function to set the Default // Close Operation of JFrame. frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // Creating Object of "JLabel" class JLabel label = new JLabel("Label:"); // Creating Object of // "JTextField" class JTextField textField = new JTextField(); // Creating Object of // "JCheckBox" class JCheckBox checkBox1 = new JCheckBox("CheckBox1"); // Creating Object of "JCheckBox" class JCheckBox checkBox2 = new JCheckBox("CheckBox2"); // Creating Object of "JButton" class JButton findButton = new JButton("Button 1"); // Creating Object of "JButton" class JButton cancelButton = new JButton("Button 2"); // used to set the Border of a checkBox1 checkBox1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); // used to set the Border of a checkBox2 checkBox2.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); // Creating Object of "GroupLayout" class GroupLayout layout = new GroupLayout(frame.getContentPane()); // to get the content pane frame.getContentPane().setLayout(layout); // it used to set Auto Create Gaps layout.setAutoCreateGaps(true); // it used to set Auto Create Container Gaps layout.setAutoCreateContainerGaps(true); // it used to set the horizontal group layout.setHorizontalGroup(layout.createSequentialGroup() // Adding the label .addComponent(label) // Adding the Parallel Group .addGroup(layout.createParallelGroup(LEADING) // Adding the textfield .addComponent(textField) // Adding the Sequential Group .addGroup(layout.createSequentialGroup() // Adding the Parallel Group .addGroup(layout.createParallelGroup(LEADING) // Adding the checkBox1 .addComponent(checkBox1)) // Adding the Parallel Group .addGroup(layout.createParallelGroup(LEADING) // Adding the checkBox2 .addComponent(checkBox2)))) // Adding the Parallel Group .addGroup(layout.createParallelGroup(LEADING) // Adding the findButton .addComponent(findButton) // Adding the CancelButton .addComponent(cancelButton))); layout.linkSize(SwingConstants.HORIZONTAL, findButton, cancelButton); layout.setVerticalGroup(layout.createSequentialGroup() // Adding the Parallel Group .addGroup(layout.createParallelGroup(BASELINE) // Adding the label .addComponent(label) // Adding the textField .addComponent(textField) // Adding the findButton .addComponent(findButton)) // Adding the Parallel Group .addGroup(layout.createParallelGroup(LEADING) // Adding the sequential Group .addGroup(layout.createSequentialGroup() // Adding the Parallel Group .addGroup(layout.createParallelGroup(BASELINE) // Adding the checkBox1 .addComponent(checkBox1) // Adding the checkBox2 .addComponent(checkBox2)) // Adding the Parallel Group .addGroup(layout.createParallelGroup(BASELINE))) // Adding the CancelButton .addComponent(cancelButton))); frame.pack(); frame.show(); } }
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/javax/swing/GroupLayout.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