GrabDuck

Java. ������� ��� ���������� ������������ �������. ������� 4.

:

���������� Swing

����������� ��������� ��������� � ����������� ���������� ������������ (GUI). ������������ ������� �������� ����� �������: ��� ��������� ���������� � ������ ������� ������ ����������� ��� ���������� ��������� ���������� (� ���������������� �� ����� �������� ����������� ������������), � ������� ��������� ������, ��������� ����, ���������� ������ � �.�.

������ �� ����������� ������ ���������������� ������������� ��������� ��������� ��� ������ �� ����������� ������� ��������� ����������. ��������, ��� ��� ����������� � ���������������� ����� ������� ������� � �����������, ��������������� ��� ������� ������������� ����� �����.

� Java ���� ��� ���������� ���������� ����������� ��� �������� ������������ ���������� ������������. ����� ������ �� ��� ���������� AWT. ���������, ��� ��� �� �������������� ��� ������� ��� ���������, ���������� ������� � ��� �������� ������ ��������. ���������� Swing ����������� �� ���� AWT � �������� ����������� �� ����������� ������, ����������������� ����� ��������� � ������. ������, ����� ����� ����������, ���������� SWT.

������ ���������� ������������� ����� ������� ��� ������ � ��������, ��������, ������, ���� � �.�., �� ��� ������ �������������� ��-�������: ��� ����� ��������� ����� ������� � ������� �����������, ������� ���������� ��������� � ����� ���������� �� ������ (��������, � ����� ���������� ��������������) �� ���-�� ������. ��� ����� ��� ������� � ������ ����� ���������������� �� ������: ��� ����� ����� ������ ���� � �� ��, �� � ������� �� ��� ���� ���������, ���� ����������� ��������� � ���� �������������� ��������.

�� ���� ������� ������ ����, ����� ������ ����� ���� ���� ���������, �� ����������� ������� ����������� � ����� �� ��� � ���������� Swing. ����������� ����������� ��������� ����� ���� ���������� � �� �������.

���� JFrame

������ GUI-��������� ����������� � ���� � �� ���� ������ ����� ��������� ��������� �������������� ����.

� ���������� Swing ������ ����� JFrame, �������������� ����� ���� � ������ � ������� ��������� (� �������� ����������, ��� ���� ����� � ���������). ��� ����� �������� ������� � ������������ �� ������.

�� ����� Swing

� Swing ���� ��� ��������� ������� ����. ��������, JWindow � ���������� ����, ��� ����� � ��� ������ ���������. ������ � ��� ������� �������� �������� � ���������, ������� ����� �������� ������ ��������� ��������� ��������������� �������� (��������, ��������� ���������� �� ��).

����������� JFrame() ��� ���������� ������� ������ ����. ����������� JFrame(String title) ������� ������ ���� � ���������� title.

����� �������� ���������� ���������, ��������� �� ����� ������ ����, ��� ����������� ��� ��� ������:

setSize(int width, int height) � ������������� ������� ����. ���� �� ������ �������, ���� ����� ����� ������� ������ ���������� �� ����, ��� � ��� ��������� � ������������ ����� ������� �������� ����������� ���� �������. ������� ���� �������� �� ������ ��������� �������, �� � ������� � ������ ���������.

setDefaultCloseOperation(int operation) � ��������� ������� ��������, ������� ���������� ���������, ����� ������������ ��������� ���� �������� �� �������. ������ � ��������� ���� ���� ��� ��������� ���� ��� �������� ������� ��������� ���������� ������. ��� ����, ����� ����������������� ��� ���������, ������� � �������� ��������� operation �������� ��������� EXIT_ON_CLOSE, ��������� � ������ JFrame.

setVisible(boolean visible) � ����� ���� ���������, ��� �� ��������� ��������. ����� ���������� ���� �� ������, ���������� ������ ����� � ���������� true. ���� ������� ��� � ���������� false, ���� ����� ������ ���������.

������ �� ����� �������� ���������, ������� ������� ����, ������� ��� �� ����� � ��������� ������ ����� ����, ��� ������������ ��������� ����.

import javax.swing.*; public class MyClass { public static void main (String [] args) { JFrame myWindow = new JFrame("������� ����"); myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myWindow.setSize(400, 300); myWindow.setVisible(true); } }

�������� ��������, ��� ������ � ������������ ������� ���������� Swing ����������� ������������� ����� java.swing.*

��� �������, ����� ������������ ����, ���������� ��������� ������� ������ ��������, ��� � ���� ������� ����������. ���������� ������� ��������� ��������� ����������, ��������� �� ������� ���, ���������� � ������ ������ ����. ����� ����, � ��������� ����� ���� ����� ���� � ����������� �� ��� � ������ main() �������� � �����������, ��������� �������� ������� ������������: ������� ������ ������ � �������, ������� �� ������������. �������� ���� ��, ����� ������ ���� ���������� ������ ��������� � ���������� ��������������. ������� ������������ ��������� ��������� � ������ �������� ��������� �������:

� ����� SimpleWindow.java:

public class SimpleWindow extends JFrame { SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(250, 100); } }

� ����� Program.java:

public class Program { public static void main (String [] args) { JFrame myWindow = new SimpleWindow(); myWindow.setVisible(true); } }

�� ������� �����, ��� ���� ����������� � ��������� ������, ���������� ����������� JFrame � ������������� ���� ������� ��� � ��������� � ������������ (������ �������� ���������� ����������� �����������). ����� main() ���������� � ������ ������, ������������� �� ���������� ����� ���������. ������ �� ���� ������� ����� �����, ������ ���������� ����� �����, ������� � ��� ����� ����������� � ����� ������������ (�.�. ���������������� ��� �������������).

�������� ��������, ��� ����� setVisible() �� ���������� � ������ SimpleWindow, ��� ������ �������: �� ���, ��� ����� ������ ����������� � ����� ������� ��� ������ �����, ������ ���� ����, � ��� ��������� ������� � ���, ����� ���� � ����� ������ ��������� �� ����� � ����������� ������������ ������ ���������.

������ �����������

�������� � ���� �������� ���������� �� �����������. ��� ����� ������ ������ �����������, ���������� ��� ������������ ����*. ���������� � ���� ������ ����� ������� getContentPane() ������ JFrame. � ������� ������ add(Component component) ����� �������� �� ��� ����� ������� ����������.

� �������� ����� ������� �� ����� ������������ ������ ���� ������� ���������� � ������ (�� �������� � ����������� �� ����������). ������ ����������� ������� JButton � ��������� ������������� � ���������� ���� String � ��������.

������� ������ � ������ ����������� ������ ���� ���������:

JButton newButton = new JButton(); getContentPane().add(newButton);

� ���������� ������� ���� � �������. ������ �������� ��� ��������� ������� ����. ����� ������ ������� �� �� ���� ����������, ������� ���������� ������� ��������� ������� ������������ ��������� �� ������.

����� Container (���������)

��������, ������� �������� ������ ��������, ���������� ������������. ��� ��� �������� ��������� ������ Container � ��������� �� ���� ��� �������� �������:

add(Component component) � ��������� � ��������� ������� component;

remove(Component component) � ������� �� ���������� ������� component;

removeAll() � ������� ��� �������� ����������;

getComponentCount() � ���������� ����� ��������� ����������.

����� ������������� � ������ Container ���������� ����� ���� �������� ������� ��� ���������� ������� �����������, ������������ � ����������. ��� �����, ��� ������ �� ������ ������-���������. ��� �������������, ���� �� ���� ��������� � �������� ����������, �� ���������� ������� ���� � ����������. ����� �������� ��������� ��������� ���������� �� ���������������� ������������� � �����������. � ���������, �� ����� ����� getComponentAt(int x, int y), ������������ ���������, � ������� �������� ����� � ��������� ������������ (���������� ������������� �� ������ �������� ���� ����������) � ��� ������. �� �� ����� �������� ������������� ����������� ���������, � ����� �������� � ��� �������� ����� ������������� ������� � ������ JPanel.

����� JPanel (������)

������ JPanel � ��� ������� ����������, �������������� ����� ������������� ������������, �� ������� ����� ��������� ������ ��������. �������� ����������� � ��������� ��������, ��������������� �� ������ Container.

� ������� � ������� �� ���������, ��� ����������� �� ������ ����������� ������ ������ ��� �� ������������. ��� ���������� �� ������. �� ����� ���� � ������ ������ ���� ��� ���������� �������� ����������, ������� ���������� ��������� ��������� ������������ ���������, ����������� �� ������. ��� ����� �������� ������� setLayout(LayoutManager manager). �� ����� �������� � ���� ����� ������ ��������, ���������� �����, ������ ������ ���������.

�������� ����������������� ���������� FlowLayout

����� ������� �������� ���������� � FlowLayout. �� ��������� ����������� �� ������ ���������� ������ �� �������, ������ �� �������, � ����������� �� �������� ������. ��� ������ ��������� ������� �� ���������� � ������� ������, �� ����������� �� ���������. ����� ����� ������������ ��� �� �������. ������� ����������� ������ SimpleWindow ��������� �������:

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); panel.add(new JButton("������")); panel.add(new JButton("+")); panel.add(new JButton("-")); panel.add(new JButton("������ � ������� ��������")); setContentPane(panel); setSize(250, 100); }

��������� ������������ ������� � ������ java.awt. �� ��������� ������������� ������ ������.

������������� �� ���������� ����, ������������� ����� ������� ���������. ������ ������ � ��� ����������� ��� ����� � ��������� ��������� (��� ������������ �� ������). ������ ����� ����� �������, ���� �������� ������� ���� �� ����� ������ ���������.

�������������� ����� �������. ����� �������� ������������ FlowLayout ��������� ������������� ��� ����������. �������� ��������, � ��������� �� ������������ ������������� ����������. �� ���� ������ ���� ������:

FlowLayout newLayout = new FlowLayout(); panel.setLayout(newLayout);

�� ���������� ����:

panel.setLayout(new FlowLayout());

��� ������ ��������� � ��� �������, ����� � ���������� ��� �� ����������� ���������� � ������������ ������� (��� ����������� ��� ������� �������). �� ������� �������� ������������, ��� �� ����������� ��� � ������ � � ���. ������ ������ � �������� ���� ������ ���� � ������ ����� ����.

� ���������������� ������ � �� ���������

������ ������ ������ �� ������ ��������� � ���� ���������� � ���� ������ ���, ����� ����� ���������� ���������� ��������� (��� ���������� ��� �� ����������, ��������, ��������� ��������, � ����� ��� ��������� �������� ����). � ��������, �� ����� ���� �������� ����� ��������� ������� getLayout() ������ JPanel, ��, ��� �������, � ���� ������ ��� �������������.

������, ����� JPanel ����� ������������ ��� ����������, ����� �����������, � ������� � �������� ��������� �������� �������� ������������. ������� ������ ������

JPanel panel = new JPanel(); panel.setLayout(new FlowLayout());

����� ��������:

JPanel panel = new JPanel(new FlowLayout());

����� ����, �� ��������� ����� ����������� ������ ����� ������ �������� ������������ FlowLayout. ������� � ����������� ���� ������� �� ���������� ��������� ������ ��� �����������, ������ ��, ������ ��� �� �����������.

����� ����� �� ��������� �� ������ ����� ������. �� ����� ������ �� �������� ���������� � ���� ������� � ���������, ������� �������� ��� ��� ���������� ��� ������.

����� setContentPane(JPanel panel) ��������� �������� ������ ����������� ����.

�������� ���������� ���������� BorderLayout

�������� ���������� BorderLayout ��������� ������ �� ���� ��������: �����������, �������, ������, ������ � �����. � ������ �� ���� �������� ����� �������� ����� �� ������ ����������, ������ ��������� ����� �������� ��� ���������� ��� ���� �������. ����������, ����������� � ������� � ������ �������, ����� ��������� �� ������, ����������� � ������ � ����� � �� ������, � ���������, ����������� � �����, ����� �������� ���, ����� ��������� ��������� ���������� ������������ ������.

��� ���������� �������� �� ������ � ���������� ���������� BorderLayout, ���������� ������������� ��������� � ������ add(), ����� �� �������� ������� � ����. ��� ����� ������ ������ � ���������� ������ �����: "North", "South", "East", "West""Center". �� ������ ��� ������������� ������������ ���������, ������������ � ������ BorderLayout: NORTH, SOUTH, EAST, WESTCENTER (��������� � ������ ����� ��������� ������ � �� �������� �����, � ��� ������� �������� ����������� ��� ��������� ���������� ������ ��������������). ���� �� ������������ ����� add() ��� ������, � ����� ����������, ������� ����� �������� � �����.

������ ����������� ����� ������ ����� ������������, ������ ������� ������ � �������� ��� ���� ������� (��� ���� ��������� � ����������� �������). ����� ������������ ������ BorderLayout, ������� ������ �� ��� ���� ��������:

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); getContentPane().add(new JButton("������"), BorderLayout.NORTH); getContentPane().add(new JButton("+"), BorderLayout.EAST); getContentPane().add(new JButton("-"), BorderLayout.WEST); getContentPane().add(new JButton("������ � ������� ��������"), BorderLayout.SOUTH); getContentPane().add(new JButton("� �����!")); setSize(250, 100); }

������ ����� ������ �����������, ���� �������� ������� ����.

������ ���������� �� �������� ������������ � ������ ����������� �� ���������. ����������� �������� ���������� ��������� �� ����� ����, ����� ����������� � ��� ������ ������������, ������ ��������� � �.�. � ����������� �� ���� ��������� � ����������� ������� ��������� �� �����������, ���� ���� ����������� ����� ���� ������ ������ �� ���������� ��������� � � ����� ���������� ������������.

�������� ���������� ���������� GridLayout

GridLayout ��������� ������ �� ������ ���������� ������ � ������ (����� ������� ���� ���������� ������� �� �������). ������ �������, ����������� �� ������ � ����� �������������, ������� �������� ���� ������. ������ ����������� ���������� �� �������, ������� � ����� �������.

���� ��������, � ������� �� ������������� �����, ��������� ������������� � ����������� (������ ����� �����). ���������� ������� ���������� ��������, ����� � ���������� ����� �������� �� ����������� � �� ���������. ��������� ��������� ������ � ������������� ������.

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2,3,5,10)); panel.add(new JButton("������")); panel.add(new JButton("+")); panel.add(new JButton("-")); panel.add(new JButton("������ � ������� ��������")); panel.add(new JButton("��� ������")); setContentPane(panel); setSize(250, 100); }

�������� �������� ���������� BoxLayout � ����� Box

�������� BoxLayout ��������� �������� �� ������ � ������ ��� � �������.

������ ��� ������ � ���� ���������� ���������� ��������������� ����� Box, �������������� ����� ������, ��� ������� ��� ��������� ������� ����������. ��������� ����� ������ �� �������������, � ����� �� ���� ����������� �������, ������������ � ������ Box: createHorizontalBox()createVerticalBox().

��������, ����������� �� ������ � ������� �����������, ������������� ���� �� ������. ���������� ����� ���������� �� ��������� �������. ������ ������ ���������� ����� �������� ��������� ���������, ������������ ������ ������� � ���������� �������� ��������, ����������� ����� ���� �������� ����������. �������������� �������� ��������� ����������� ������� createHorizontalStrut(int width), � ������������ � ������� createVerticalStrut(int height). ��� ������ ���������� � ������ Box, � ������������� �������� � ������ �� ��� ���������� ������ ��������.

����� ����, �� ����� ������ ����� �������� ��� ���� ����������� ������� � ������������ ��������. ���� ������ ������ ����� ������, ��� ���������� ��� ������������ ���������� ���� ���������, �� �� ���, ������� �������� �������������, ����� ��������� ��������� �������������� ������������ �����. ���� �� ���������� ����� ��������� ���� ��� ��������� �������, �������������� ��������� ������������ ����� �������������� � � ��� ���������� ����� ����������. �������������� � ������������ ������� ��������� �������������� �������� createHorizontalGlue()createVerticalGlue().

������ ����������� ������ ����� ��������� ����� �� ��������� �������. �� ���������� ������ ������ �����������, �������� ����� ����� ������������ ��������, � ����� ���������� � �������� � 10 ��������.

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); Box box = Box.createVerticalBox(); box.add(new JButton("������")); box.add(Box.createVerticalStrut(10)); box.add(new JButton("+")); box.add(Box.createVerticalGlue()); box.add(new JButton("-")); box.add(Box.createVerticalStrut(10)); box.add(new JButton("������ � ������� ��������")); setContentPane(box); setSize(250, 100); }

����������� ������������ ���������

� ������� � ������������ ������� ��� ������ ��������� ��������� �� ������ ����. ����� ������������ �� ����������� ������� �� ���������.

������ ��� ���������� ���� ��������� ����� ������������, ����� �����-�� �������� ���� ��������� �����, ��������, �� ������� ���� ��� �� ������. ��� ����, ����� ���������� ������������ ������ ����������� ���������� (��������, ������ ��� ������), ������������ ������ setAlignmentX(float alignment) � ������������ �� ����������� � setAlignmentY(float alignment) � ������������ �� ���������. � �������� ��������� ����� ����� ������������ ���������, ������������ � ������ JComponent. ��� ������������ �� ����������� ������ ��������� LEFT_ALIGNMENT (�� ������ ����), RIGHT_ALIGNMENT (�� ������� ����) � CENTER_ALIGNMENT (�� ������). ��� ������������ �� ��������� � BOTTOM_ALIGNMENT (�� ������� ����), TOP_ALIGNMENT (�� �������� ����) � CENTER_ALIGNMENT (�� ������).

������ ������������ �������� ��������� �����, ��� ���������. ����� ��� ����������, ������� ���������� ������, �������� ������ ������ �� ������� ����. ��� ����� ������� ������:

box.add(new JButton("-"));

�� ��� ������:

JButton rightButton = new JButton("-"); rightButton.setAlignmentX(JComponent.RIGHT_ALIGNMENT); box.add(rightButton);

��� �������� ������ ���������� ��� ��������� � ���� ������, ��������� ������ ��� ����� ��������� � ��� �� ����, � ��� ��������: ��������� ������������ �� ������� ���� � ���������� � ������. ������� ����� � ������������� �������� ������ � �������� �� � �������� ��������� � ����� � ����� �� ���������.

����� ������� ��������� �� ������ ����, � ������� ������ ����������� �� ���, ���, ��������, ���������. �� ��������, ��� ������������ �� ������� ���� ��������� ������ � ������� ���� ����������, �� � ������ ������ ������������� ��� ��������, ������ ������ � ������������� �� ������� ���� ��������� ����� �����.

���������� ������. ��� ������������ �� ������� ���� ������ �� ����������� � ������� ���� ����������. ������ ����� �� ����������� ������ ����� � ��������� ����� ������������. ��� ��������� ���������� ����������� � ���� ����� ����� ����� �����, ������� � ���������� ����������� ������.

������������ ��������� ��� ����������� ������������ ����� ��������� � ���, ��� �� ������ ����� ������, ��� ������ ������� ��� �����. �� ��������� ������� �� �������� � ������������ ���� ��������� ����������. ������ ����� ��������� ������� �������: ���� ��� �������� � ���������� ��������� ���������, �� ������� ��������� ��������� (��� ��� � ���� � ���������� �������, ����� ��� ���������� ���� ��������� ����� � ����� � ���������� ��������� � ������ ���� ������.

� ������������ ���������

�������� ������������ �� ����� ���� ������������ ����� ������������ ����� � ��������� �� 0 �� 1. �� ����������, ����� ����� ���������� �������� ����� �� ����� ������������, �.�. � ����� ���������� ��������� ����� ���������. ��������� LEFT_ALIGNMENT � TOP_ALIGNMENT �� ����� ���� ����� 0, RIGHT_ALIGNMENTBOTTOM_ALIGNMENT ����� 1, � CENTER_ALIGHNMENT � 0.5. ����� ����������� ��� ����� �������� (���� ������������� �������� ����������� �������� �����������!), � ����� ������� ����� ������ ����� �� 0 �� 1 � ��������� ���������� ������������ ������������.

���������� �������������������� � ������������ �������, ������� ��������� ������������ ��� �� ���������, ����� ���������� ������ ������ ���������� ����� ������������. ��������� ������� ���� �� ����� ������ ���������, ����� ������� ��� �������� ��������� ���� �����.

������ ���������� ���������

���� � �������� ��������� ���������� ������ ���������� null, �������� �� ����� ������������� �������������. ���������� ������� �������� ���������� � ���� ������ ������� ����, ��� ���� ��� ����� �� ������� �� �������� ������ � �� ��������� ������ ���������. �� ��������� ���������� ����� ���� (�.�. ������� ���������� � ����� ������� ���� ������). ������ �������� ����� ���������� �������� ���� (� ��������� ������ ��� ������ � ������ ����� ����� ���� � ������� ������������ �� �����).

���������� �������� ����� ������ ����� �� ��������� �������:

setLocation(int x, int y),

setLocation(Point point)

��� ������ �������� ����������, ������������ ����� ������� ���� �������� � ����� � ��������� ������������. ������� � ������� ������� �����. ����� ����������� ����� ����� ������ �������, � ����� �������� ������ Point. ����� Point �� ���� ������������ ����� �� �� ���� �����, ��� ����������� ����� ��� Point(int x, int y). �������� ������ � ��������� ���������� ����� �������� getX()getY().

����� �������� ��������: ����� ������������ ����� Point, ���� ����� ������ �������� ���� �����? �� ���� � ���, ��� ������ �������� ������ ���������� ��������� � ���������� ��������� ����� � � ���� ������� ����� ������. ��������, ����� getLocation(), ������������ ���������� ��������. �����������, ��� ����� ��������� ������� b � �������� � �� �����, ������� �������� ������� a. ����� ����� �������� ����� �������:

b.setLocation(a.getLocation());

������ �������� �������� ����� �� ���� �������:

setSize(int width, int height),

setSize(Dimension size)

��� ������ �������� ��������� � �������, ��� � � ������� ���, � ������� �������� ���������. ����� Dimension, ���������� ������ Point, ������ ������ ��� �����, ����� ����������� � ����� �����������: Dimension(int width, int height) � ��������� �������� ������ � ����� ������������ � ������ � ������ � � ������� ������� ������� getWidth()getHeigth(). ��� ����, ����� �������� ������� ������ ��������, ����� ��������������� ������� getSize(), ������������� ������ ������ Dimension. ������� b ����� ������� ����� ������ �� �������, ��� ������� a, �������� �������:

b.setSize(a.getSize());

�������� ������, � ������� �� ����� ������� �������� ��������� ���������� � ������� ��������� �� ��� ��� ������:

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(null); JButton button = new JButton("������"); button.setSize(80, 30); button.setLocation(20,20); panel.add(button); button = new JButton("������ � ������� ��������"); button.setSize(120, 40); button.setLocation(70,50); panel.add(button); setContentPane(panel); setSize(250, 150); }

�� ���������� ���� � �� �� ���������� button ��� ��������� � ����� ������� (������, ������ ��� �� ��������� �� �����). � ����� ����, ���������� ��� ����������� �������� � ������ ������� � ����, ��� ���������� � ��� ��� ������ �� �����������, �� ���������� ���������������� ���������� ��� ����������� �� ������.

�������������� ����������� �������� �����������

���� � ������ ���� ����� �������� ����������, ��� ���������� ���� �������� ������� � ���������� ���� ����� ���������. � ���� ����� ���������, ������� � ���������� ������� ������� panel.setLayout(null) �� panel.setLayout(new FlowLayout()). �������� ���������� ��� ���������� ���������� � ������� ���� ���������.

������ ����������� ��������� ��������� ��������� ������� �������� �� ���������� ������ ������� ��������� �, ����� �������, �������� ���������� ���� ����.

�� ����� ��������, ��� � ��������� ������� ���������� ��������� ��������� ��� ��������� �� ������������. ��������, ��� ����������� ������� � ������ ��������� BorderLayout ��� ��� ������ � ��������� GridLayout. � � ������ � ���������� FlowLayout, ��������, �������� ������� �� �������� ����� �� ������������ �������. ����������, ��� ��� �� �������.

������ ���������� ��������� ����� ��� ���� ��������: ���������� ����������, ����������� ���������� � ����������������. ������, ���� ����� ��� ������� ��� ������� ���������� ����� � ������� ��������������� �������:

getMinimumSize(),

getPreferredSize(),

getMaximumSize().

������ ���������� ��������� ���� Dimension. ��� ����������������� � ��������������� ������. ��������, � ������ ����������� ������ � �������, ������������ ������ �� ���������, � ���������������� ������� �� ������� �� ������ (����������� ��� ������ ������ ������� ���� ������� �����).

�������� FlowLayout ������ ������������� ���������������� ������� ���������. �������� BorderLayout ������������� ���������������� ������ ������� � ������, � ����� ���������������� ������ �������� � �������. ��������� ������� ����������� ��� ��������� ������������ ������. �������� GridLayout �������� ��������� ������� ���� ��������� ��� ������ �����. �������� BoxLayout ������������� �� ���������������� �������.

����� ������� ��������� ������ ��� ��������� ��� ������������, �� ���������� ��������� �� �������� ������ ����� ����������� ��� ������ ������������.

����� ����� ��������� ����� ��������� � ������� ��������������� ������� set:

setMinimumSize(Dimension size),

setPreferredSize(Dimension size),

setMaximumSize(Dimension size).

���� ����� ������������ ������� �����, ����� �������� ��� �������������� ������������� ��� ����������� ������������ ����� ���������������� ��������. ��� ����� ������� ��������:

element.setMinimumSize(element.getPreferredSize());

��������� ����

� ������������� ���� �������� �� ���� �������� ������ ���� ������� setSize(). �� ����� ������������ �����-���� �������� ������������, ������������� �������� � ���������� �� ������� �� ����������� ��������, ������ ������� �������, ����� ������� ���� ����� ������ �����������.

����������, �������� ���������� ����� �������, ��� ������� ��� �������� ���� ����� ���������������� ������� ��� ������� � ���*.

���� ������ ������ �������� �������� ����, ������� ����� pack(), ��� ����� ��������� ����������� ������� � ������ ������������ ���� ���������, ����������� � ���� ����.

������� ������ ����� ������, ������� � ������ �� ��������������� �������� �������

setSize(250, 100);

�� �������

pack();

��������, ��� ����� ������ �� ����� ������ ����������, ��� ������� �� �������� (��������� ������ �� ����� ��������� ��� ���������� ������ ����������������� �������).

����������

��� ��� ����������, ��������� ������ ����� ���� ������ ������. �������� ������ � ����� �������� � ���������� ���������� FlowLayout � ������ � ����� �������� � ���������� ���������� BoxLayout (��������������). ���������� ��� ������ � ������� ���� (�� ������� ��������� ���������� � ������ �����������): ���� � �����, � ������ ����� ����� ������� ����.

�����

����� ������ ������ �� ������ ��� ���������� ��������� � ������������ � ���������� ���������� ���������, � ��� ����������� ��������� �� ���� �� �����, ��� ����������� � ������� �����.

����� ������ ��������������� ������� setBorder(Border border). ���������� ������ ��������� ����� � ������ ������ Border. ��� ����������� �����, ������� ��� �������� ����� ������������ ��� ����������:

EmptyBorder � ������ �����, ��������� ������� ������� ������ ������. ������� �������� �������� � ������������ �������� ������ �������.

TitledBorder � ����� � ����������. ���������� ����������� ����� ���� �������� ���� String (����� ���������). ��������� ����� ����������� ����� ����� ������� �����, ����� ��������� ����������.

EtchedBorder � ����� � ���������. ����� ���� �������� ��� ��������.

BevelBorder � �������� ����� (�������� ��� ��������). ����� ��������� �����, ��������� ��� ��������� �������� ��������.

SoftBevelBorder � �� �� �����, ��� BevelBorder, �� ��������� ������������� ��������� ����.

LineBorder � ������� �����, ������������ �������� ������. ����� �������� ���� � ������� �����, ��������� ����.

MatteBorder � ����� �� �������������� �������.

CompoundBorder � ���������� ��� �����, ������������ � �������� ���������� ������������ � ���� ����� �����.

��� ������������� ������ ������� � ������ javax.swing.border.

���������� ������. � ���� ������� �� �������� ����� ������� � ���������� ������� � ��������� �� � ���� �������. ����� �� ��������� ����� ��� ��������� �������� ����� ������, ������� �� � ��������� �����:

private JPanel createPanel(Border border, String text) { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JButton(text)); panel.setBorder(new CompoundBorder(new EmptyBorder(12,12,12,12), border)); return panel; }

����� createPanel() ������� ������ � ������� �� ���� ���� ������. � �������� ��������� ���������� ������� �� ������ � �����, ������� ���������� �������� � ������. ����� ����������� �� ��������, � ����� ���������� � ������ ������. ���� ����� ����� ������������, ����� ����� �� ��������� � ���� ������.

������ ����� ��� ������������� ���� ������� � ������������ ���� ���������.

SimpleWindow(){ super("������� ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2,3,5,10)); panel.add(createPanel(new TitledBorder("����� � ����������"), "TitledBorder")); panel.add(createPanel(new EtchedBorder(), "EtchedBorder")); panel.add(createPanel(new BevelBorder(BevelBorder.LOWERED), "BevelBorder")); panel.add(createPanel(new SoftBevelBorder(BevelBorder.RAISED), "SoftBevelBorder")); panel.add(createPanel(new LineBorder(Color.ORANGE, 4), "LineBorder")); panel.add(createPanel(new MatteBorder(new ImageIcon("1.gif")), "MatteBorder")); setContentPane(panel); pack(); }

���� ������ ����������, � ������� ����� ������������� ��������� ��������� ����� � ��� ��� ��������. � ��� ������������ ��� ����� ������: ColorImageIcon.

����� Color ������������ ��� ������ � ������. � ��� ���� ��������� ��������, ����������� �������� ���������������� �����. � ���������, � ������� ��������� Color.ORANGE.

����� ImageIcon ��������� ����������� �����������. �������� ��� ������������ � ��� ���� � �����, �� �������� ����������� ����� ���� ���������. � ������� ������������ ������������� ��� ����� �1.gif�. ����� ������ ImageIcon ��� ������� ������, ���� � ����� ������ ������ ���� ������� � ����� �������.