GroupLayout în Java - Constructor al clasei GroupLayout

Cuprins:

Anonim

Introducere în GroupLayout în Java

În GroupLayout în Java, managerii de dispunere sunt ca diferite tipuri de „învelișuri Word” pentru componentele Java. În același mod în care caracteristica „Word Wrap” înfășoară caracterele de text în jurul liniei următoare într-un procesor de texte, managerii de machete înfășoară „Swing components” în jurul zonei vizibile a unui JFrame sau JApplet. Managerii de machete sunt derivate din pachetul AWT. Managerii GroupLayout este un LayoutManager care grupează componentele și le aranjează într-un JFrame sau JApplet. Este utilizat pentru dezvoltarea interfeței grafice pentru utilizatori.

Pentru componente, GroupLayout folosește două tipuri de aranjamente:

  • Aranjament secvențial: în acest aranjament, componentele sunt aranjate una după alta în succesiune.
  • Aranjament paralel: în acest aranjament, componentele sunt plasate paralel în același loc.

Atunci când sunt cuibărate ierarhic, aceste două aranjamente devin mai puternice pentru care GroupLayout definește grupuri de machete. Un grup poate fi paralel sau secvențial și poate conține componente, alte grupuri și lacune.

  • Dimensiunea grupului secvențial: suma dimensiunilor tuturor componentelor conținute într-un container.
  • Dimensiunea grupului paralel: dimensiunea celei mai mari componente dintr-un recipient.

Constructor al clasei GroupLayout în Java

Mai jos este constructorul clasei de playplayout:

GroupLayout (Container Host): Pentru containerul specificat, creează un GroupLayout.

Exemplu:

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

Definirea unui aspect: Mod de aranjare a componentelor în JFrame sau JApplet prin combinarea grupurilor secvențiale și paralele.

Exemple de implementare GroupLayout în Java

Mai jos sunt diferite exemple de implementare GroupLayout în Java:

Exemplul # 1

Să începem cu un exemplu simplu, având două componente la rând.

Vom descrie acest aspect folosind grupuri. Începând cu axa orizontală, un grup secvențial format din două componente începând de la stânga la dreapta. Începând cu axa verticală, un grup paralel format din două componente cu aceeași poziție.

Cod:

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();
)
)

ieşire:

Exemplul # 2

Să presupunem că avem două componente ca mai jos:

Vom descrie acest aspect folosind grupuri. Începând cu axa orizontală, un grup secvențial format din două componente începând de la stânga la dreapta. Începând cu axa verticală, un grup secvențial format din două componente de la stânga la dreapta.

Cod:

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();
)
)

ieşire:

Exemplul # 3

Un Gap este ca o componentă invizibilă de o anumită dimensiune.

Ele sunt adesea folosite pentru a controla distanța dintre componente sau de la marginea containerului. De asemenea, definește golurile automate ca distanțe preferate între componentele vecine. Folosește trei tipuri de goluri între componente sau componente și borduri: RELATATE, UNELATATE și INDENTATE. Ceva exclusiv pentru grupuri secvențiale este lipsuri. Golurile separă componentele după numărul de pixeli indicat. Acum vom oferi un decalaj orizontal de 20 și un decalaj vertical de 30.

Cod:

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();
)
)

ieşire:

Exemplul # 4

Dar dacă ne dorim un decalaj într-un grup paralel?

Dar lacunele nu pot fi utilizate în grupuri paralele. Deci, se utilizează o metodă diferită pentru a crea un decalaj. Utilizează o combinație de grupuri paralele și secvențiale. Începe cu un grup paralel și cu prima componentă. Apoi, are un grup secvențial în interiorul grupului paralel. Și adaugă un decalaj în cadrul acestui grup secvențial și, în final, adaugă a doua componentă. Grupurile verticale conțin ambele componente într-o manieră secvențială.

Cod:

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();
)
)

ieşire:

Exemplul # 5

Acum vom crea machete de compunere.

Trebuie să creăm un layout grilă și JPanel pentru a susține aspectul și a configura patru butoane într-un model (2, 2). În primul rând, începem cu un grup paralel în grupul orizontal urmat de adăugarea panoului de dispunere a grilei. Și grupul secvențial din grupul paralel și adăugarea celor două butoane în ordine secvențială pe orizontală. În continuare, în grupul vertical, începe cu un grup secvențial. Apoi vom adăuga aspectul grilei JPanel. În continuare, vine un grup paralel pentru cele două butoane. Și în final, metoda de construire terminată.

Cod:

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();
)
)

ieşire:

Concluzie

GroupLayout este util atunci când doriți să grupați ierarhic componentele într-un container. Unele dintre metodele utile pe care le-am folosit în acest articol sunt:

  1. Java GroupLayout .createParallelGroup (): creează și returnează un grup paralel.
  2. Java GroupLayout .createSequentialGroup (): Creează și returnează un SequentialGroup.

Articole recomandate

Acesta este un ghid pentru GroupLayout în Java. Aici discutăm constructorul clasei de playplayout în cinci exemple diferite. Puteți parcurge și alte articole conexe pentru a afla mai multe -

  1. BorderLayout în Java
  2. BoxLayout în Java
  3. Aspect grilă în Java
  4. CardLayout în Java
  5. Aspect HTML