Bevezetés a GroupLayout alkalmazásba a Java-ban
A Java alkalmazásban a GroupLayout alkalmazásban az Elrendezéskezelők olyanok, mint a Java-összetevők különféle „Word-csomagolása”. Ugyanúgy, ahogyan a „Word Wrap” szolgáltatás a szöveg karaktereit a szövegsorkezelő következő sorára helyezi, az elrendezéskezelők a „Swing Component” -et a JFrame vagy a JApplet látható területe körül körözik. Az elrendezéskezelők az AWT csomagból származnak. A GroupLayout manager egy LayoutManager, amely az összetevőket csoportosítja és elrendezi JFrame vagy JApplet formátumban. Grafikus felhasználói felület fejlesztésére szolgál.
Az összetevők esetében a GroupLayout kétféle elrendezést használ:
- Szekvenciális elrendezés: Ebben az elrendezésben az alkatrészek egymás után vannak egymás után elrendezve.
- Párhuzamos elrendezés: Ebben az elrendezésben az alkatrészek párhuzamosan vannak elhelyezve ugyanabban a helyen.
Ha egymásba ágyazzák egymást, ez a két elrendezés erősebbé válik, amelyre a GroupLayout definiálja az elrendezési csoportokat. A csoport lehet párhuzamos vagy egymást követő, és tartalmazhat komponenseket, más csoportokat és réseket.
- Szekvenciális csoport mérete: A tartályban lévő összes összetevő méretének összege.
- Párhuzamos csoport mérete : A tartály legnagyobb összetevőjének mérete.
A GroupLayout osztály kivitelezője Java-ban
Az alábbiakban bemutatjuk a grouplayout osztály kivitelezőjét:
GroupLayout (Container Host): A megadott Container számára létrehoz egy GroupLayout-t.
Példa:
import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel();
GroupLayout grpLayout = new GroupLayout(grpPanel);
)
Elrendezés meghatározása: Az összetevők elrendezése a JFrame vagy a JApplet belsejében egymást követő és párhuzamos csoportok kombinálásával.
Példák a GroupLayout végrehajtására Java-ban
Az alábbiakban bemutatjuk a GroupLayout Java alkalmazásba vételének különböző példáit:
1. példa
Kezdjük egy egyszerű példával, amelynek két összetevője van egymás után.
Ezt az elrendezést csoportok segítségével írjuk le. A vízszintes tengelytől kezdve két összetevőből álló sorozatcsoportot indítunk balról jobbra. A függőleges tengelytől kezdve egy azonos helyzetű két elem párhuzamos csoportja.
Kód:
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();
)
)
Kimenet:
2. példa
Tegyük fel, hogy két alkotóeleme van:
Ezt az elrendezést csoportok segítségével írjuk le. A vízszintes tengelytől kezdve két összetevőből álló sorozatcsoportot indítunk balról jobbra. A függőleges tengelytől kezdve két összetevőből álló sorozatot, balról jobbra.
Kód:
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();
)
)
Kimenet:
3. példa
A szakadék olyan, mint egy bizonyos méretű láthatatlan elem.
Gyakran használják az alkatrészek közötti távolság vagy a konténer határától való távolság ellenőrzésére. Ezenkívül meghatározza az automatikus réseket a szomszédos elemek közötti előnyös távolságokként. Háromféle rést használ az alkotóelemek vagy alkotóelemek és a szegélyek között: KAPCSOLATOS, NEM KAPCSOLATOS és BEJEGYZETT. Valami kizárólag a szekvenciális csoportok számára a hiányosságok. A rések elválasztják az összetevőket a megjelölt képpontok száma alapján. Most adunk egy vízszintes rést 20 és egy függőleges rést 30.
Kód:
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();
)
)
Kimenet:
4. példa
De mi van, ha hiányosságot akarunk egy párhuzamos csoportban?
A hiányosságok azonban nem használhatók párhuzamos csoportokban. Tehát egy eltérő módszert használnak a rés létrehozására. Párhuzamos és egymást követő csoportok kombinációját használja. Egy párhuzamos csoporttal és az első komponenssel kezdődik. Ezután van egy szekvenciális csoport a párhuzamos csoporton belül. És hozzáad egy rést ebben a szekvenciális csoportban, és végül hozzáadja a második komponenst. A függőleges csoportok mindkét komponenst egymást követő módon tartalmazzák.
Kód:
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();
)
)
Kimenet:
5. példa
Most összeállítási elrendezéseket készítünk.
El kell készíteni egy rácsos elrendezést és a JPanel-et az elrendezés támogatásához, és négy gombot (2, 2) mintában kell beállítanunk. Először egy párhuzamos csoporttal kezdjük a vízszintes csoportban, amelyet a rácsos elrendezési panel hozzáadása követ. És a szekvenciális csoport a párhuzamos csoportban, és a két gomb hozzáadása egymás utáni sorrendben vízszintesen. Ezután a függőleges csoportban egy sorozattal kezdődik. Ezután hozzáadjuk a JPanel rácsos elrendezést. Ezután jön egy párhuzamos csoport a két gombhoz. És végül, a kész építkezési módszer.
Kód:
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();
)
)
Kimenet:
Következtetés
A GroupLayout akkor hasznos, ha összetevőit hierarchikusan csoportosítani szeretné egy tárolóba. A cikkben alkalmazott néhány hasznos módszer:
- Java GroupLayout .createParallelGroup (): Párhuzamos csoportot hoz létre és ad vissza.
- Java GroupLayout .createSequentialGroup (): létrehoz egy SequentialGroup-ot és visszaadja azt.
Ajánlott cikkek
Ez egy útmutató a GroupLayout használatához Java-ban. Itt öt különféle példán keresztül tárgyaljuk a csoportos kiállítási osztály kivitelezőjét. Megnézheti más kapcsolódó cikkeket is, ha többet szeretne megtudni -
- BorderLayout Java-ban
- BoxLayout Java-ban
- Rácselrendezés Java-ban
- CardLayout Java-ban
- HTML elrendezés