Introduzione a GroupLayout in Java

In GroupLayout in Java, i gestori layout sono come diversi tipi di "wrapping di parole" per i componenti Java. Allo stesso modo in cui la funzione "A capo automatico" avvolge i caratteri del testo intorno alla riga successiva in un elaboratore di testi, i gestori del layout avvolgono i "componenti oscillanti" attorno all'area visibile di un JFrame o JApplet. I gestori layout sono derivati ​​dal pacchetto AWT. I gestori di GroupLayout è un LayoutManager che raggruppa i componenti e li dispone in un JFrame o JApplet. Viene utilizzato per lo sviluppo dell'interfaccia utente grafica.

Per i componenti, GroupLayout utilizza due tipi di accordi:

  • Disposizione sequenziale: in questa disposizione, i componenti sono disposti uno dopo l'altro in sequenza.
  • Disposizione parallela: in questa disposizione, i componenti vengono posizionati parallelamente nello stesso posto.

Quando sono nidificati gerarchicamente, queste due disposizioni diventano più potenti per le quali GroupLayout definisce i gruppi di layout. Un gruppo può essere parallelo o sequenziale e può contenere componenti, altri gruppi e spazi vuoti.

  • Dimensioni del gruppo sequenziale: somma delle dimensioni di tutti i componenti contenuti in un contenitore.
  • Dimensione del gruppo parallelo: dimensione del componente più grande in un contenitore.

Costruttore della classe GroupLayout in Java

Di seguito è riportato il costruttore della classe grouplayout:

GroupLayout (Container Host): per il Container specificato, crea un GroupLayout.

Esempio:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel();
GroupLayout grpLayout = new GroupLayout(grpPanel);
)

Definizione di un layout: modo di disporre i componenti all'interno di JFrame o JApplet combinando gruppi sequenziali e paralleli.

Esempi per implementare GroupLayout in Java

Di seguito sono riportati i diversi esempi per implementare GroupLayout in Java:

Esempio 1

Cominciamo con un semplice esempio, con due componenti di fila.

Descriveremo questo layout usando i gruppi. A partire dall'asse orizzontale, un gruppo sequenziale di due componenti a partire da sinistra a destra. A partire dall'asse verticale, un gruppo parallelo di due componenti con la stessa posizione.

Codice:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createParallelGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Produzione:

Esempio n. 2

Supponiamo di avere due componenti come di seguito:

Descriveremo questo layout usando i gruppi. A partire dall'asse orizzontale, un gruppo sequenziale di due componenti a partire da sinistra a destra. A partire dall'asse verticale, un gruppo sequenziale di due componenti da sinistra a destra.

Codice:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Produzione:

Esempio n. 3

Un gap è come un componente invisibile di una certa dimensione.

Sono spesso utilizzati per controllare la distanza tra i componenti o dal bordo del contenitore. Definisce inoltre gli spazi automatici come distanze preferite tra i componenti vicini. Utilizza tre tipi di spazi tra componenti o componenti e bordi: RELATED, UNRELATED e INDENTED. Qualcosa di esclusivo per i gruppi sequenziali sono le lacune. Gli spazi separano i componenti dal numero di pixel indicati. Ora daremo uno spazio orizzontale di 20 e uno spazio verticale di 30.

Codice:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addGap(20)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addGap(30)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Produzione:

Esempio n. 4

Ma cosa succede se vogliamo un divario in un gruppo parallelo?

Ma le lacune non possono essere utilizzate in gruppi paralleli. Quindi, viene utilizzato un metodo diverso per creare un gap. Utilizza una combinazione di gruppi paralleli e sequenziali. Inizia con un gruppo parallelo e il primo componente. Quindi, ha un gruppo sequenziale all'interno del gruppo parallelo. E aggiunge uno spazio all'interno di questo gruppo sequenziale e infine aggiunge il secondo componente. I gruppi verticali contengono entrambi i componenti in modo sequenziale.

Codice:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createParallelGroup()
.addComponent(BFirst)
.addGroup(gl.createSequentialGroup()
.addGap((int)(BFirst.getMinimumSize().getWidth()/2))
.addComponent(BSecond))
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Produzione:

Esempio n. 5

Ora creeremo layout di composizione.

Dobbiamo creare un layout a griglia e JPanel per supportare il layout e impostare quattro pulsanti in un modello (2, 2). Prima di tutto, iniziamo con un gruppo parallelo nel gruppo orizzontale seguito dall'aggiunta del pannello di layout della griglia. E il gruppo sequenziale nel gruppo parallelo e aggiungendo i due pulsanti in ordine sequenziale in senso orizzontale. Successivamente, nel gruppo verticale, inizia con un gruppo sequenziale. Quindi aggiungeremo il layout della griglia JPanel. Successivamente, arriva un gruppo parallelo per i due pulsanti. E infine, il metodo di compilazione finito.

Codice:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel(), grdPanel = new JPanel();
JButton BFirst = new JButton("First"), BSecond = new JButton("Second"), BGrid() = new JButton(4);
GroupLayout grpLayout = new GroupLayout(grpPanel);
GridLayout grdLayout = new GridLayout(2, 2);
public GroupLayoutExample() (
grpPanel.setLayout(grpLayout);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
for(int i=0; i<4; i++) (
BGrid(i) = new JButton(String.valueOf(i+1));
grdPanel.add(BGrid(i));
)
grdPanel.setLayout(grdLayout);
grpLayout.setHorizontalGroup(grpLayout.createParallelGroup()
.addComponent(grdPanel)
.addGroup(grpLayout.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond))
);
grpLayout.setVerticalGroup(grpLayout.createSequentialGroup()
.addGroup(grpLayout.createParallelGroup()
.addComponent(BFirst)
.addComponent(BSecond))
.addComponent(grdPanel)
);
)
public void Build() (
setContentPane(grpPanel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Produzione:

Conclusione

GroupLayout è utile quando si desidera raggruppare gerarchicamente i componenti in un contenitore. Alcuni dei metodi utili che abbiamo usato in questo articolo sono:

  1. Java GroupLayout .createParallelGroup (): crea e restituisce un gruppo parallelo.
  2. Java GroupLayout .createSequentialGroup (): crea e restituisce un SequentialGroup.

Articoli consigliati

Questa è una guida a GroupLayout in Java. Qui discutiamo il costruttore della classe grouplayout in cinque diversi esempi. Puoi anche consultare i nostri altri articoli correlati per saperne di più -

  1. BorderLayout in Java
  2. BoxLayout in Java
  3. Grid Layout in Java
  4. CardLayout in Java
  5. Layout HTML

Categoria: