Увод у ГроупЛаиоут на Јави
У ГроупЛаиоут-у на Јави, менаџери изгледа су попут различитих типова „Ворд облога“ за јава компоненте. На исти начин на који функција „Ворд Врап“ омотава знакове текста до следећег ретка у програму за обраду текста, менаџери изгледа омотају „Свинг компоненте“ око видљивог подручја ЈФраме или ЈАпплет. Менаџери распореда потичу се из АВТ пакета. ГроупЛаиоут менаџери су ЛаиоутМанагер који групира компоненте и распоређује их у ЈФраме или ЈАпплет. Користи се за развој графичког корисничког интерфејса.
За компоненте, ГроупЛаиоут користи две врсте аранжмана:
- Секвенцијални распоред: У овом распореду, компоненте су распоређене једна за другом у низу.
- Паралелни распоред: Код овог распореда, компоненте се постављају паралелно на исто место.
Када се уклапају хијерархијски, ова два аранжмана постају моћнија за које ГроупЛаиоут дефинише групе изгледа. Група може бити паралелна или секвенцијална и може садржавати компоненте, друге групе и празнине.
- Величина секвенцијалне групе: Збир величина свих садржаних компоненти у контејнеру.
- Величина паралелне групе: Величина највеће компоненте у контејнеру.
Конструктор класе ГроупЛаиоут на Јави
Испод је конструктор класе гроуплаиоут:
ГроупЛаиоут (хост контејнера): За наведени контејнер креира ГроупЛаиоут.
Пример:
import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel();
GroupLayout grpLayout = new GroupLayout(grpPanel);
)
Дефинисање изгледа : Начин распореда компоненти унутар ЈФраме или ЈАпплет комбинацијом секвенцијалних и паралелних група.
Примери за имплементацију ГроупЛаиоут-а на Јави
Испод су различити примери за имплементацију ГроупЛаиоута на Јави:
Пример # 1
Започнимо са једноставним примером, који садржи две компоненте у низу.
Описаћемо овај изглед користећи групе. Почевши од хоризонталне осе, секвенцијална група од две компоненте која почиње с лева на десно. Почевши од вертикалне осе, паралелна група од две компоненте са истим положајем.
Шифра:
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();
)
)
Излаз:
Пример бр. 2
Претпоставимо да имамо две компоненте као испод:
Описаћемо овај изглед користећи групе. Почевши од хоризонталне осе, секвенцијална група од две компоненте која почиње с лева на десно. Почевши од вертикалне осе, секвенцијална група од две компоненте са леве на десно.
Шифра:
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();
)
)
Излаз:
Пример бр. 3
Празнина је попут невидљиве компоненте одређене величине.
Често се користе за контролу удаљености између компоненти или од границе контејнера. Такође дефинише аутоматске празнине као префериране растојања између суседних компоненти. Користи три врсте празнина између компонената или компоненти и граница: ПОВЕЗАНЕ, НЕПОВРАТНЕ и ИНДЕНТИРАНЕ. Нешто ексклузивно за секвенцијалне групе су празнине. Празнине раздвајају компоненте према приказаном броју пиксела. Сада ћемо дати хоризонтални размак од 20 и вертикални размак од 30.
Шифра:
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();
)
)
Излаз:
Пример бр. 4
Али шта ако желимо јаз у паралелној групи?
Али празнине се не могу користити у паралелним групама. Дакле, другачији метод се користи за стварање празнине. Користи комбинацију паралелних и секвенцијалних група. Започиње паралелном групом и првом компонентом. Затим, она има секвенцијалну групу унутар паралелне групе. И додаје јаз у овој секвенцијалној групи и на крају додаје другу компоненту. Вертикалне групе садрже обе компоненте на секвенцијални начин.
Шифра:
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();
)
)
Излаз:
Пример бр. 5
Сада ћемо креирати сложене излоге.
Морамо да направимо изглед решетке и ЈПанел да подржимо изглед и поставимо четири дугмета у (2, 2) обрасцу. Прво започињемо са паралелном групом у водоравној групи, а затим додајемо таблу распореда решетке. И секвенцијална група у паралелној групи и додавање два дугмета у редном редоследу хоризонтално. Затим у вертикалној групи започиње са секвенцијалном групом. Затим ћемо додати изглед решетка ЈПанел. Затим долази паралелна група за два дугмета. И на крају, готов начин израде.
Шифра:
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();
)
)
Излаз:
Закључак
ГроупЛаиоут је користан када желите хијерархијски груписати своје компоненте у контејнер. Неке од корисних метода које смо користили у овом чланку су:
- Јава ГроупЛаиоут .цреатеПараллелГроуп (): Ствара и враћа паралелну групу.
- Јава ГроупЛаиоут .цреатеСекуентиалГроуп (): Ствара и враћа СекуентиалГроуп.
Препоручени чланци
Ово је водич за ГроупЛаиоут на Јави. Овдје ћемо расправљати о конструктору класе гроуплаиоут у пет различитих примјера. Можете и да прођете кроз остале сродне чланке да бисте сазнали више -
- БордерЛаиоут у Јави
- БокЛаиоут у Јави
- Распоред решетке на Јави
- ЦардЛаиоут у Јави
- ХТМЛ Лаиоут