Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zbirnuk_lab_po_kursy_intTexTaSybd.doc
Скачиваний:
9
Добавлен:
08.12.2018
Размер:
754 Кб
Скачать
☆

Компоновульник FlowLayout.

Компонувальник FlowLayout надає найпростіший спосіб розташування компонентів. Цей компонувальник є компонувальником по-замовчуванню для JPanel. На малюнку показано приклад застосування даного компонувальника:

Приклад 1.

import javax.swing.*;

import java.awt.*;

public class Lab4 extends JFrame

{

public Lab4()

{

setTitle("FlowLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new FlowLayout());

contentPane.add(new JButton("Button 1"));

contentPane.add(new JButton("Button 2"));

contentPane.add(new JButton("Button 3"));

contentPane.add(new JButton("Long-Named Button 4"));

contentPane.add(new JButton("5"));

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Клас FlowLayout має три конструктори:

public FlowLayout()

public FlowLayout(int alignment)

public FlowLayout(int alignment, int horizontalGap, int verticalGap)

Аргумент alignment може бути FlowLayout.LEADING, FlowLayout.CENTER, or FlowLayout.TRAILING. Якщо аргумент alignment дорівнює FlowLayout.LEADING – компоненти будуть вирівнюватись по лівому краю, якщо FlowLayout.TRAILING - по правому, якщо FlowLayout.CENTER – по центру (це значення по-замовчуванню). Аргументи horizontalGap and verticalGap задають відстань між компонентами в пікселах.

Компонувальник BorderLayout

На малюнку показано розташування кнопок у випадку використання даного компонувальника:

Приклад 2.

import javax.swing.*;

import java.awt.*;

public class Lab4 extends JFrame

{

public Lab4()

{

setTitle("BorderLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(new JButton("Button 1 - NORTH"), BorderLayout.NORTH);

contentPane.add(new JButton("Button 2 - SOUTH"), BorderLayout.SOUTH);

contentPane.add(new JButton("Button 3 - WEST"), BorderLayout.WEST);

contentPane.add(new JButton("Button 4 - EAST"), BorderLayout.EAST);

contentPane.add(new JButton("Button 5 - CENTER"), BorderLayout.CENTER);

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Компонувальник CardLayout.

Даний компонувальник отримав свою назву по аналогії із колодою карт, коли тільки верхня карта із цілої колоди є видимою. За власним бажанням ми можемо показати будь-яку. Як правило до контейнера із CardLayout додаються інші об’єкти типу JPanel.

Приклад 3.

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class Lab4 extends JFrame

{

private CardLayout layoutCard;

private JCheckBox chboxSelect;

private JPanel pnlMain;

public Lab4()

{

setTitle("CardLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

chboxSelect = new JCheckBox("Select panel");

chboxSelect.addActionListener(new SelectPanel());

chboxSelect.setSelected(true);

contentPane.add(chboxSelect, BorderLayout.NORTH);

JPanel pnlFlow = new JPanel(new FlowLayout());

JPanel pnlBorder = new JPanel(new BorderLayout());

layoutCard = new CardLayout();

pnlMain = new JPanel(layoutCard);

contentPane.add(pnlMain, BorderLayout.CENTER);

pnlMain.add(pnlFlow, "FlowLayout");

pnlMain.add(pnlBorder, "BorderLayout");

pnlFlow.add(new JButton("Button 1"));

pnlFlow.add(new JButton("Button 2"));

pnlFlow.add(new JButton("Button 3"));

pnlFlow.add(new JButton("Long-Named Button 4"));

pnlFlow.add(new JButton("5"));

pnlBorder.add(new JButton("Button 1 - NORTH"), BorderLayout.NORTH);

pnlBorder.add(new JButton("Button 2 - SOUTH"), BorderLayout.SOUTH);

pnlBorder.add(new JButton("Button 3 - WEST"), BorderLayout.WEST);

pnlBorder.add(new JButton("Button 4 - EAST"), BorderLayout.EAST);

pnlBorder.add(new JButton("Button 5 - CENTER"), BorderLayout.CENTER);

}

class SelectPanel implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if (chboxSelect.isSelected())

layoutCard.show(pnlMain, "FlowLayout");

else

layoutCard.show(pnlMain, "BorderLayout");

}

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Результат виконання програми

На даному прикладі показані дві панелі, додані до панелі із компонувальником CardLayout. Для того, щоб показати одну із панель – натисніть селектор (JCheckBox) із написом “Select panel”.

Коли ми додаємо панелі до контейнера ми повинні задати стрічку, котра ідентифікує дану панель. В даному прикладі ми додаємо першу панель із стрічкою "FlowLayout", а другу – із "BorderLayout". Для того, щоб показати одну із панелей, необхідно передати функції show() як аргумент стрічку, котра ідентифікує панель.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]