- •Лабораторна робота №5 (Java. Типи даних.)
- •План роботи
- •Теоретичні відомості
- •Більш складні типи даних – масиви.
- •Оператори керування кодом програми. Оператори if, if-else.
- •Оператори switch.
- •Порядок виконання роботи
- •Інтерфейс List.
- •Інтерфейс Set.
- •Класи колекцій
- •Клас ArrayList.
- •Інтерфейси колекцій
- •Інтерфейс Collection.
- •Клас HashSet.
- •Клас TreeSet.
- •Колекції класів, визначених програмістом.
- •Порядок виконання роботи
- •Контрольні питання
- •Завдання властивостей компонентів.
- •Обробка подій.
- •Порядок виконання роботи
- •Контрольні питання
- •Лабораторна робота №8 (Пакет Swing – компонувальники (LayoutManager))
- •План роботи
- •Теоретичні відомості
- •Компоновульник FlowLayout.
- •Компонувальник BorderLayout
- •Компонувальник CardLayout.
- •Компонувальник BoxLayout.
- •Компонувальник GridLayout
- •Порядок виконання роботи
- •Контрольні питання
- •Лабораторна робота №9 (Створення простого текстового редактора.)
- •План роботи
- •Теоретичні відомості
- •Порядок виконання роботи.
- •Контрольні питання
- •Порядок виконання роботи
- •Контрольні питання
- •Лабораторна робота №11 (Основні компоненти j2me)
- •Теоретичні відомості
- •Компоненти графічного інтерфейсу користувача midp. (пакет javax.Microedition.Lcdui)
- •Програмна структура mid-лета.
- •Завдання
- •Контрольні питання
- •Список рекомендованої літератури
- •Ресурси
Компоновульник 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() як аргумент стрічку, котра ідентифікує панель.


