Въведение в GridLayout в Java
Мениджърите на оформлението се използват в графичното програмиране за подреждане на компоненти по специфичен начин. Те се използват за определяне на размера и позицията на компонент в контейнер. Налични са различни видове мениджъри на оформление. GridLayout е един от тях. GridLayout в Java разделя контейнера в мрежа от клетки, наречени редове и колони. Той подрежда компонентите в правоъгълна решетка. Всяка клетка може да побере само един компонент, еднакво оразмерен и приравнен помежду си.
Пример: 3 реда и 4 колони
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
Общи стъпки-Gridlayout в Java
- Настройка на контейнера с помощта на конструктора JFrame:
JFrame frame = нов JFrame (); - Задаване на мениджъра на оформлението на панела с помощта на конструктора JPanel:
JPanel панел = нов JPanel (); - Добавяне на компоненти в контейнера:
panel.add (бутон); frame.add (панел); - Настройка на ориентацията на компонента:
panel.setComponentOrientation (ComponentOrientation.LEFT_TO_RIGHT);
Стойността по подразбиране на свойството ComponentOrientation е, че ориентацията на компонентите е хоризонтална и отляво надясно.
Видове конструктори с пример
По-долу са видовете конструктори с примери и код.
1. GridLayout ()
Празен конструктор с една колона на компонент в един ред.
код
import java.awt.*;
import javax.swing.*;
public class GridLayoutDemo (
public static void main(String() args) (
JFrame frame = new JFrame("Grid Layout");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout());JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
panel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
frame.add(panel);
)
)
изход:
2. GridLayout (int редове, int колони)
Конструктор с определен брой редове и колони.
Параметри:
редове - броят на редовете (стойност нула означава произволен брой редове).
колони - броят на колоните (стойност нула означава произволен брой колони).
код
import java.awt.*;
import javax.swing.*;
public class GridLayoutDemo (
public static void main(String() args) (
JFrame frame = new JFrame("Grid Layout");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2));
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
frame.add(panel);
)
)
изход:
3. GridLayout (int редове, int колони, int хоризонтална празнина, int вертикална празнина).
Конструктор с определен брой редове и колони, хоризонтални и вертикални пропуски между редове и колони.
Параметри:
редове - броят на редовете (стойност нула означава произволен брой редове).
колони - броят на колоните (стойност нула означава произволен брой колони).
хоризонтална междина между всяка от колоните
вертикална междина между всеки от редовете
Хвърля:
IllegalArgumentException- ако стойността на редовете и колоните е зададена на нула.
код
import java.awt.*;import javax.swing.*;
public class GridLayoutDemo (
public static void main(String() args) (
JFrame frame = new JFrame("Grid Layout");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2, 5, 10));
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
frame.add(panel);
)
)
изход:
Пример с изпълнение
Случай: В програмата по-долу, когато ефектът на мишката преминава през клетката на мрежа, цветът й се променя от черен в бял.
код
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class gridLayout extends JPanel(
public gridLayout() (
super(new GridLayout(3, 3));
JLabel label1, label2, label3, label4, label5, label6, label7, label8, label9;
//create the lables
label1 = new JLabel();
label2 = new JLabel();
label3 = new JLabel();
label4 = new JLabel();
label5 = new JLabel();
label6 = new JLabel();
label7 = new JLabel();
label8 = new JLabel();
label9 = new JLabel();
//set the background color for each label
label1.setBackground(Color.BLACK);
label1.setOpaque(true);
label2.setBackground(Color.BLACK);
label2.setOpaque(true);
label3.setBackground(Color.BLACK);
label3.setOpaque(true);
label4.setBackground(Color.BLACK);
label4.setOpaque(true);
label5.setBackground(Color.BLACK);
label5.setOpaque(true);
label6.setBackground(Color.BLACK);
label6.setOpaque(true);
label7.setBackground(Color.BLACK);
label7.setOpaque(true);
label8.setBackground(Color.BLACK);
label8.setOpaque(true);
label9.setBackground(Color.BLACK);
label9.setOpaque(true);
//add mouse listeners for each label
label1.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label1.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label1.setBackground(Color.BLACK);
)
));
label2.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label2.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label2.setBackground(Color.BLACK);
)
));
label3.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label3.setBackground(Color.WHITE);)
public void mouseExited(MouseEvent me) (
label3.setBackground(Color.BLACK);
)
));
label4.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label4.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label4.setBackground(Color.BLACK);)
));
label5.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label5.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label5.setBackground(Color.BLACK);
)));
label6.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label6.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label6.setBackground(Color.BLACK);
)
));
label7.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label7.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label7.setBackground(Color.BLACK);
)
));
label8.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label8.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label8.setBackground(Color.BLACK);
)
));label9.addMouseListener(new MouseAdapter() (
public void mouseEntered(MouseEvent me) (
label9.setBackground(Color.WHITE);
)
public void mouseExited(MouseEvent me) (
label9.setBackground(Color.BLACK);
)
));
//add the labels
add(label1);
add(label2);
add(label3);
add(label4);
add(label5);
add(label6);
add(label7);
add(label8);
add(label9);
)
private static void createAndShowGUI() (
//create and setup the container
JFrame frame = new JFrame("Gridlayout Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
//add content to the container
frame.add(new gridLayout());
//display the container
frame.pack();
frame.setVisible(true);
)public static void main(String() args) (
createAndShowGUI();
)
)
изход:
заключение
Gridlayout в Java е полезен, когато искате да направите решетки в контейнер заедно с едно условие, т.е. всяка от клетките на мрежата е с еднакъв размер и еднакво разположени.
Има и други налични методи, както е споменато по-долу:
1. getRows () - Получаване на броя на редовете.
2. setRows (int i) - задайте броя на редовете на определената стойност.
3. getColumns () - Получаване на броя на колоните.
4. setColumns (int i) - Задайте броя на колоните на определената стойност.
5. getHgap () - Получава хоризонталната празнина между компонентите.
6. setHgap (int i) - Задайте хоризонталната междина между компонентите на определената стойност.
7.getVgap () - Получава вертикалната празнина между компонентите.
8. setVgap (int i) - Задава вертикалната междина между компонентите на определената стойност.
9. addLayoutComponent (String name, Component comp) - добавя посочения компонент с посоченото име към оформлението.
10. removeLayoutComponent (Component comp) - премахва посочения компонент от оформлението на контейнера.
11. предпочитанLayoutSize (Контейнер родител) - Определя предпочитания размер на контейнера.
12. minimalLayoutSize (родител на контейнера) - Определя минималния размер на контейнера.
13. layoutContainer (Контейнер родител) - Определя посочения контейнер.
14. toString () - Връща низовото представяне на стойностите на оформлението на мрежата.
Препоръчителни статии
Това е ръководство за Gridlayout в Java. Тук сме обсъдили типовете конструктори с примери, кодове с изпълнение. Можете също да разгледате и другите ни свързани статии, за да научите повече-
- Сливане сортиране в Java
- Оформление в Java
- Най-добрите компилатори на Java
- Destructor в Java
- HTML оформление