GrabDuck

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

:

��������� ������� � Swing

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

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

  1. ������� �������, � ����� �� ������� ����������� ������� ���������.
  2. �������� ���, ����������� ��� ������� (��� ���������� ���������� �������).
  3. ������� ���������� ������� � ��������������� ��������.

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

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

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

� ���������� Swing ��� �������� ����������� ������� � ����������� ��� ���������� ������������ ������� �������������� �������������.

�������� �������������� � ��� ����������� ������ ��������-���������������� ����������������, ����������� ����������� ������� ���������� � ��������������, �� ����� ������������ � ���������������� ��������. ������� �������������� ��������� ������, ������� ���������� ������ ��� ���������� ����� �������� � �������������� ����� ��������. � ���������, ����� �� ������������� ������� �������������� ���������, ����������� ������ ��� �������� ��������� � ������� ���� ���������� ������� � �������, ������� � ����� ���������.

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

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

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

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

�������� ��������� ������� ���������� Swing

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

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

��������� MouseListener � ��������� ������� �� ����

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

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

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

��������� ������� �� ���� ������ ����������� ��������� MouseListener. � ���� ���������� ����������� ��������� ������:

public void mouseClicked(MouseEvent event) � �������� ������ ������ �� ����������� �������

public void mouseEntered(MouseEvent event) � ������ ���� ����� � ������� ������������ �������

public void mouseExited(MouseEvent event) � ������ ���� ����� �� ������� ������������ �������

public void mousePressed(MouseEvent event) � ������ ���� ������ � ������, ����� ������ ��������� ��� ����������� ��������

public void mouseReleased(MouseEvent event) � ������ ���� �������� � ������, ����� ������ ��������� ��� ����������� ��������

� ��������� ���� MouseEnent

������ �� ���� ������� �������� �������� ���� MouseEvent, ����� ������� ���������� �������������� ���������� � ��������� �������. ��������, ����� �������� ������, ��������� ������ �������, �������� event.getSource() (�� ���������, ��� ���� � ��� �� ��������� ����� ���� ��������������� � ���������� �������� � ������ ��� ����� ������������ ������, ����� ������ �� ��� ������ ������ �����). ����� getPoint() ������ ���������� �����, � ������� ��������� ������ ����, ����� ���� ������������ �������. ����� getClickCount() ���������� ����� ��������� ������ ������� (����� ����� ������ ��� mouseClicked() � ��������� ������ ������� ���������� �������, ������� � �.�. ������).

����� ���������� ������� �� ������, ��������� ������� �����, ����������� ��������� MouseListener, ������ ����� mouseClicked() ������ ��������� ���������� �������. ����� ���������� ������� ������ ����� ������ � ���������������� ��� ��� ��������� ������������ ��� ������. ��� ����������� ��������� ������������ ����� addMouseListener(MouseListener listener).

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

class MouseL implements MouseListener {   public void mouseClicked(MouseEvent event) { if (loginField.getText().equals("����")) JOptionPane.showMessageDialog(null, "���� ��������"); else JOptionPane.showMessageDialog(null, "���� �� ��������"); }   public void mouseEntered(MouseEvent event) {}   public void mouseExited(MouseEvent event) {}   public void mousePressed(MouseEvent event) {}   public void mouseReleased(MouseEvent event) {}   }

�� ������� ��������� ��������� ������� ������ SimpleWindow, ����� �� ��� ����� �������� ������ � ��� ���������� ����� loginFieldpasswordField. ����� ����, ���� ������� �� ������������ ������ ���� �� ���� ��������� ������� ����, ��������� �������� ��� ���� ������� (������ ����� ������ ����������). ���� � ���, ��� � ��������� ������ ����� �������� �� �������� ����������� (���� �� ����������� �� ���������� ������ ��������� �������) � �� �� ������ �� ������� ������ ����� ������. � �� ������ ������� ������ ��������� � ���������� ��� � ������. ��� ����� � ��� ������������ SimpleWindow() ���������� �������� �������:

ok.addMouseListener(new MouseL());

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

JButton ok = new JButton("OK");

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

����� ������ ok ������ ���������, ������� ����� ������������ ������� �� ���, ��� ������������ ������� ����� (���������) �����. ������ ������ ���������� ������ ����� �������� ���������. ��� �� �������, ��������� ����� �� ����� ����� � � ��������� ����� ���� ������ ������ ���� ������ ����� ������ (�������� �������� ��������� � ������������ ������). �� ����� �����, ��� � � ����� �������, ��������� ������� ��� ����, ����� ������������ ������� ������������� ������� � � ����� ������ ������ ok, � ������, ������������ � ��������� ������ �������: �� ����� �������� � ����� �������. ����� �������, �� ����� �������� ��������� ����� ���������. ��� ����� �������� ������ MouseL ����� ������ �������, � �������

ok.addMouseListener(new MouseL());

�������� ��:

ok.addMouseListener(new MouseListener() {   public void mouseClicked(MouseEvent event) { if (loginField.getText().equals("����")) JOptionPane.showMessageDialog(null, "���� ��������"); else JOptionPane.showMessageDialog(null, "���� �� ��������"); }   public void mouseEntered(MouseEvent event) {}   public void mouseExited(MouseEvent event) {}   public void mousePressed(MouseEvent event) {}   public void mouseReleased(MouseEvent event) {}   });

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

������, ����� ����������� ��������� ��������� � ����� ������, ������� � ��� �������� ��������� implements MouseListener � ��������� � ��� ����������� ������. � ���������, ��� ����� ���� ��� ����� ���� SimpleWindow. �� ���� ����� ���������� ���������� � ���������� �������� (�� � ��������� ������� ��������� ������� ��������� (��. �����).

����� MouseAdapter

��������� ����� ��������� �������������� ������� ������� ��-�� ����, ��� ������ ��������� ��� ��� ������ mouseClicked() ��� �������� ���������� ������ ���������� ���� ���������, �� ������ �������. � ��������, ����� ����� ��������.

����� MouseAdapter ��������� ��������� MouseListener, ��������� ������ ���������� ��� ������� �� ��� �������. ����� ������������ ������ ��������� �� ����� ������ � �������������� �� ������, ������� ��� �����.

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

ok.addMouseListener(new MouseAdapter() {   public void mouseClicked(MouseEvent event) { if (loginField.getText().equals("����")) JOptionPane.showMessageDialog(null, "���� ��������"); else JOptionPane.showMessageDialog(null, "���� �� ��������"); }   });

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

����� ���������� MouseListener ���������� ���������� Swing ������������ ����� ��� ������ ���������� (�������, ��� � ������ ����������� ����� ��������� ���������� ����� ����������).

������ ��������� ������ ������������� ��������� ***Listener, ��� *** � ��� ���������. ����������� ������� �� ���� ����������� (�� ����������� ���, � ������� ����� ���� �����) ������������� ������ �����-�������� ***Adapter. ������ ����� ���������� ��������� ��������� ���� �������� ���� ***Event, � ������� ������� ��� ����������, ����������� � �������. �� �� ����� �������� ������������� ������ ��������� ���� ����������. ��� ������� �� ������� � �� ���������� ����� ������, � �������� ������� ���� ����������� ��������� Eclipse.

����� ��������� ��������� � ������� (������� ������������ ��������������� ��� ����������) ������������ ����� add***Listener(***Listener listener).

��������, ��������� MouseListener ������ ����������� ��������� � ����� �� ������, �������� ������������� �����-�������� MouseAdapter. ������ ����� ���������� ������������ �������� ���� MouseEvent, � �������������� ��������� ������� addMouseListener(MouseListener listener). �� �� ����� ��������� ��� ���������� ��� ������ ����� ����������, ��� �������� ����������.

��������� ������ FocusListener

��������� FocusListener ����������� �������, ����� ������ �������� ����� (�� ���� ���������� ��������) ��� ������ ���. ��������� ������ ����� ����� ��� ������� ����������. � ������ ������ ������� � ���� ����� ���� ������ ���� �������� (����������� � ������) ������, ������� �������� ���������� � ������� �� ���������� �������� (�.�. ��������� �� ������� ����������), � ��������� �������� ����� � �.�. ������������ ���������� ���� �� ��������� ���������� �������� ����� ��� � ������� ������� Tab (������������ ����� ����).

��������� FocusListener ����� ��� ������:

public void focusGained(FocusEvent event) � ����������, ����� ����������� ������ �������� �����

public void focusLost(FocusEvent event) � ����������, ����� ����������� ������ ������ �����.

��������� �������� ����� MouseWheelListener

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

public void mouseWheelMoved(MouseWheelEvent event).

��������� ���������� KeyListener

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

public void mouseKeyTyped(KeyEvent event) � ����������, ����� � ���������� �������� ������

public void mouseKeyPressed(KeyEvent event) � ����������, ����� ������ ������� ����������

public void mouseKeyReleased(KeyEvent event) � ����������, ����� �������� ������� ����������.

�������� event ���� ������� �������� ���� ������ ������ ��������. � ���������, ������� event.getKeyChar() ���������� ������ ���� char, ��������� � ������� ��������. ���� � ������� �������� �� ������ ������� ������, ������������ ��������� CHAR_UNDEFINED. ������� event.getKeyCode() ��������� ��� ������� ������� � ���� ������ ����� ���� int. ��� ����� �������� � ����� �� �������������� ��������, ������������ � ������ KeyEvent: VK_F1, VK_SHIFT, VK_D, VK_MINUS � �.�. ������ isAltDown(), isControlDown(), isShiftDown() ��������� ������, �� ���� �� ������������ ������ ���� �� ������-������������� Alt, Ctrl ��� Shift.

����������.

� ���� ����� � ������� �������� �����������, ����� ��� ������� ������� Esc � ���� ����� ������ ��� ���������� ���������.

��������� ��������� ��������� ChangeListener

��������� ChangeListener ��������� �� ��������� ��������� �������. ������ ������� ���������� �� ������ ���������� ������� ���������� ����������. ��������, ��� ������ �� ��������� JTabbedPane ��� ������� �� ������ �������, ��� �������� JSlider � ��������� ��� ���������, ������ JButton ������������� ��� ����� ��������� ������ �� ���. ����� �������, ���� ������� ��� ���������� �����, ���������� �������� ��� ��������� ��� ������� ����������� ����������. � ���������� ��������� ����� ���� �����:

public void stateChanged(ChangeEvent event).

��������� ������� ���� WindowListener

��������� WindowListener ����� ���� �������� ������ � ���� � ����������� � ��������� ��������, ������������ � �����:

public void windowOpened(WindowEvent event) � ���� ���������.

public void windowClosing(WindowEvent event) � ������� �������� ���� (��������, ������������ ����� �� �������). ����� �������� ��������, ��� ������ ����� ��������� �� ����, ��� ���� ����� ������� � ����� ����������������� ����� (��������, ������� ������ ���� ��� �������?� � �������� �������� ����, ���� ������������ ������� ����).

public void windowClosed(WindowEvent event) � ���� ���������.

public void windowIconified(WindowEvent event) � ���� ��������.

public void windowDeiconified(WindowEvent event) � ���� ����������.

public void windowActivated(WindowEvent event) � ���� ����� ��������.

public void windowDeactivated(WindowEvent event) � ���� ����� ����������.

��������� ������� ���������� �omponentListener

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

public void componentMoved(ComponentEvent event) � ����������, ����� ����������� ��������� ������������ (� ���������� ������ ������� setLocation(), ������ ��������� ���������� ��� ��� �� �����-�� �������).

public void componentResized(ComponentEvent event) � ����������, ����� ���������� ������� ������������ ����������.

public void componentHidden(ComponentEvent event) � ����������, ����� ��������� ���������� ���������.

public void componentShown(ComponentEvent event) � ����������, ����� ��������� ���������� �������.

��������� ������ �������� ItemListener

��������� ItemListener ��������� �� ��������� ��������� ������ �� ���������, �������� � ������ ������������ ����������. ��������, ���������� ������ JComboBox ������� �� ��������� ��������� � ��������� ���������, ����� ���������� ��������� �������. ����� ������ ��������� ����������� ��� ������ ���� ������ ������ ������ JCheckBox ��� ������������� JRadioButton, ��������� ��������� ������ JToggleButton � �.�. ��������� �������� ����� �������:

public void itemStateChanged(ItemEvent event).

������������� ��������� ActionListener

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

��� ������������ � ��������� ������ ������� ����� ���� ����������� ������ ��������� ActionListener, ������� ���� �����:

public void actionPerformed(ActionEvent event).

� ������������� ActionListener ���� ��������� ������������ � ������������� (���, ��� ��������� ������� �� ������ �� ���� ����������� �� ������ ������ ������� � ���� ���� ���� ������-����������� ������, �� ����� ���� ������� ��� ����� �������� �������). � ����� ���� ����� ������ ��������� � ��������� ������������ ���� ����� � ����� ������� � ���������� � ��������� ���� � ��� ������������ ������ �������, ����� ��������� ����� �������������.

��������� ������� �� ������ ok � ����� ������� ����� �������������� ��� ActionListener:

ok.addMouseListener(new ActionListener() {   public void actionPerformed(ActionEvent event) { if (loginField.getText().equals("����")) JOptionPane.showMessageDialog(null, "���� ��������"); else JOptionPane.showMessageDialog(null, "���� �� ��������"); }   });

������ � ���� � ���������� Swing

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

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

������� ���� ���� ������������ � Swing ������� JMenuBar. �� ���� ����� ���� ����� ������������ ����� ������ � ���������� ������������ BoxLayout (�� �����������), � ������� ����� ��������� �� ������ �������� ����, �� � ��� ������: ���� ���������� ������, ���� ������ � ����������. ������ ��� �������� ����������� ���������� ���������������� ������������ ������������� ����������� ����.

������� ���� ������ ���� ������������ � ���� ������� setJMenuBar(JMenuBar menuBar).

���������� �������� ���� �������� ������� ���� � ���������� ������������� ����� ������ � ������� ������ JMenu. ����������� JMenu(String title) ��������� ���� ��������: �������� ����, ������� ����� ������������ � ������ �������� ����.*

����, � ���� �������, ������� �� ������� ����, �������������� ������� JMenuItem. �� ������ ������ ������ ���� ���������� ������ JButton, �� ����, ��� ������� �� ���� ������������� ����������� �����-�� ��������.

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

� ������ JMenuItem ���� ����������. ����� JCheckBoxMenuItem �� ������ ������ ���������� ������ JCheckBox � �� ����, ����� � ���� ����� ���������� ��� �������� �����-���� �������� ����������� ����. ����� JRadioButtonMenuItem ��������� �������������, �������� ������� ������ ���� �� ���������� �����������.

������� ������� ���� ����� ������ ������������� JMenuItem ���� (��� ����� ������������) ����� �� �������������, � ������� ���������� ����� �/��� ������ �������� ����: JMenuItem(String text), JMenuItem(Icon icon), JMenuItem(String text, Icon icon). �������, � ����� ������ ����� � ������ ����� ������� �������� setText(String text)setIcon(Icon icon) ��������������.

������� ����������� � ���� ������� add(JMenuItem item) ������ JMenu. ����� �������� ������ ��������������� ��������� ����, ����� �������� ����� ���� ����������� ������� addSeparator() ������ JMenu.

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

�������� ������� ���� ����, ��������� �� ���� �������: ����� � �������, ������ � ���� ������� �������� ���������� �������. ����� ����, ������������� �������� � ��������� ������������ �������� ����, ����� �������� � ������� ���� ������ (��������� ����, ��� ��� ������� � �������� Internet Explorer).

SimpleWindow(){ super("���� � ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("����"); fileMenu.add(new JMenuItem("�����")); fileMenu.add(new JMenuItem("�������", new ImageIcon("1.gif"))); fileMenu.add(new JMenuItem("���������")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("�����")); JMenu editMenu = new JMenu("������"); editMenu.add(new JMenuItem("����������")); JMenu pasteMenu = new JMenu("��������"); pasteMenu.add(new JMenuItem("�� ������")); pasteMenu.add(new JMenuItem("�� �����")); editMenu.add(pasteMenu); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(Box.createHorizontalGlue()); menuBar.add(new JLabel(new ImageIcon("2.gif"))); setJMenuBar(menuBar); setSize(250,150); }

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

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

fileMenu.add(new JMenuItem("�����"));

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

JMenuItem exit = new JMenuItem("�����"); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); fileMenu.add(exit);

�������� System.exit(0) ������������ ������ �������� ����������.

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

����������� (��� �����������) ���� ����������� � ������ JPopupMenu, ����� �������� �� ����� JMenu. ������������� ������� ����� ������ �������� ����� show(Component comp, int x, int y), ������������ ���� � ����� � ��������� ������������ ������������ ������ ��������� ����������.

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

���������� ������, � ������� � ��� ���������� ���� ���� ����������� ����� � �������� � ����������� ���� �� ���� ���������, ��������� � ���� ������. ���������� �������� � ����������� ����� ��������� �������� (setSize) ��������� ���:

label = new JLabel("������", new ImageIcon("1.gif"), JLabel.RIGHT); JPanel panel = new JPanel(); panel.add(label); popup = new JPopupMenu(); popup.add(new JMenuItem("���������")); popup.add(new JMenuItem("�����")); label.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent event) { if (SwingUtilities.isRightMouseButton(event)) popup.show(label, event.getX(), event.getY()); } }); setContentPane(panel);

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

JPopupMenu popup; JLabel label;

��� ���������� ��� ����, ����� ��������� �����-��������� ��� ���������� � ����� � � ������������ ����.

����������� ������ ����� ������������ ���������� ��������� ������ isRightMouseButton(MouseEvent event), ������������� � ������ ��������������� ������ SwingUtilities. ����� �������� ���������� � ������� ���� � �������� �� ������, ���� �� ������ ������ ������ ������ ����. ������ getX()getY() ���������� ���������� ������� ���� ������������ ������������ ����������.

��������� Action (��������) � ����� AbstractAction

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

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

��������� Action ����������� �� ���������� ActionListener, ������� ��� ������� ����� � actionPerformed(ActionEvent event). ������ ����� ��������������� ���� ��������. �� ������ ����� ����������� ������ putValue(String key, Object value) ����� ������ ���� �� �������������� ������� ��������. ������ �������� � ��������� ������������� ��������. �� ����� ��������� ���� �� ��������, ��������� � ���������� ���������� Action. ������ �������� � ������, �������������� ����� �������� ��������.

�������� �������� ���������� Action (������, ��������������� �� ���������):

NAME � ��� ��������,

SMALL_ICON � ������, ��������������� ��������,

SHORT_DESCRIPTION � ������� �������� �������� (��� ����������� ���������).

����� setEnabled(boolean enabled) ��������� ������� �������� �������� ��� ����������.

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

���������� ���������� Action � � ��� ������� ����� ��������������� ����������� ������� (�� ����, � ��� ����� setEnabled()putValue()) � ��������������� �� ���������� �����������. ������� ������ ������������ ����������� ������ ��������� ����� AbstractAction, � ������� ��� �������� ������������ ����� � actionPerformed(), � ��� ��� ����� ���������� ���������� ��� ���������������� ���� ��������.

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

  public class SimpleWindow extends JFrame {   private ExitAction exitAction;   SimpleWindow(){ super("���� � ����"); setDefaultCloseOperation(EXIT_ON_CLOSE); exitAction = new ExitAction(); DeactivateAction deactivateAction = new DeactivateAction(); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("����"); fileMenu.add(new JMenuItem("�����")); fileMenu.addSeparator(); fileMenu.add(deactivateAction); fileMenu.add(exitAction); menuBar.add(fileMenu); setJMenuBar(menuBar); JToolBar toolBar = new JToolBar("������ ������������"); toolBar.add(exitAction); toolBar.add(deactivateAction); getContentPane().add(toolBar, BorderLayout.NORTH); JPanel panel = new JPanel(); panel.add(new JButton(exitAction)); panel.add(new JButton(deactivateAction)); getContentPane().add(panel); setSize(250,250); }   class ExitAction extends AbstractAction {   ExitAction(){ putValue(Action.NAME, "�����"); putValue(Action.SHORT_DESCRIPTION, "��������� ���������� ��������, � ���� �������� � ������."); putValue(Action.SMALL_ICON, new ImageIcon("2.gif")); }   public void actionPerformed(ActionEvent event) { System.exit(0); }   }   class DeactivateAction extends AbstractAction {   DeactivateAction(){ putValue(Action.NAME, "��������� �����"); putValue(Action.SMALL_ICON, new ImageIcon("1.gif")); }   public void actionPerformed(ActionEvent event) { if (exitAction.isEnabled()) { exitAction.setEnabled(false); putValue(Action.NAME, "��������� �����");   } else { exitAction.setEnabled(true); putValue(Action.NAME, "��������� �����"); } }   }   }

����� � ���� ������� ��� ���������� ������-��������, ���� �� ������� � ��� ����� �� ���������. ������ ����� ������, exitAction, �������� ���������� ����� ������-���� � �� ��� ������ ��������� ����� ���� � ��� ������. ������ �����-�������� ���������� � ������������ ������ exitAction (��� ���� ���������� ��������������� �������� �����). ��������� ������ � ������������� �� ���, ��� �������� � ����� ���� ������� �� ������ Action, � ����� ����������� ��������������� ���.

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

����� JOptionPane

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

���� ����� ������������ ����� JOptionPane, ���������� ��������� ����������� �������, ������������ ����������� �������.

����� showMessageDialog() ������� �� ����� ���������� ����, ������������� ������������. ��� �������� �������, ������ � ������ ��. ���������� ��������� �������������� ����� ������ � ������� �������� ����������. ����� ������� �� ��� showMessageDialog(Component component, Object content) ������� �������� ����������, ��� ������� ������ ��������� ���������� ���� � ����������� ����. ���� ����� ���������� ���� �������� ��������� ������, � ������ ������� ��������� ���������� null � ����� ���� ���������� �� ������ ������. ����� ������������ ������� showMessageDialog(Component component, Object content, String title, int type) ��������� ������ ����� ���� ��������� ���� � ������� ��� ��� (������ �� ������ � ����): ��������� �� ������ (ERROR_MESSAGE), �������������� (WARNING_MESSAGE), ���������� (INFORMATION_MESSAGE).

���������� ���� �������� ���������. ��� ������, ��� ���� ������������ �� ������ � ���� ���� ������ OK, ��������� �������� ������������� � ������������ �� ������ �������� � ������� ������.

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

public class SimpleWindow extends JFrame {   private JButton button;   SimpleWindow(){ super("��������������� ������"); setDefaultCloseOperation(EXIT_ON_CLOSE); button = new JButton("����������"); button.addActionListener(new ActionListener() {   public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(button, "�� ���� ���� �������� �� ��� ������", "����������", JOptionPane.WARNING_MESSAGE); }   }); getContentPane().setLayout(new FlowLayout()); getContentPane().add(button); setSize(200,150); } }

������ button ������� ����� ������ ����, ����� ����� ���� �������� � ��� ������ �� ���������� ������-���������.

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

������ ���� ������������ ������� showConfirmDialog(Component component, Object content). ��������� ����� ������ ��������� �� ������ ���������� showMessageDialog(), �� � ���������� ���� �������� �� ���� ������, � ���: �Yes�, �No� � �Cancel�. ����� ����, ����� ���������� ��������, ������� ����� �������� � ����������� YES_OPTION, NO_OPTIONCANCEL_OPTION. ������ ������ � ���� ������� ��������������� ������:

public class SimpleWindow extends JFrame {   JButton button;   SimpleWindow(){ super("��������������� ������"); setDefaultCloseOperation(EXIT_ON_CLOSE); button = new JButton("�����"); button.addActionListener(new ActionListener() {   public void actionPerformed(ActionEvent event) { if (JOptionPane.showConfirmDialog(button, "�� �������, ��� ������ �����?") == JOptionPane.YES_OPTION) System.exit(0); }   }); getContentPane().setLayout(new FlowLayout()); getContentPane().add(button); setSize(200,150); } }

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

����� JFileChooser

Swing �������� ������� ���� ��� ������ ����� (��������, ��������, ��� ���������������� ������ ���� ���� --> �������). ������ ������ JFileChooser ��������� ������� ������������� ��� ����������, ����� ���� ����� ���������� �� ����� ������� showOpenDialog(). ���� ����� ���������� ��������� �������� ������������ �� ������ �����, ������� ������������ � ����� �� ��������� ��������:

APPROVE_OPTION � ����� ����� ������ �������. ������ ����� ������� getFile() �������� ��������� ����.

CANCEL_OPTION � ������������ ������� ����� �����, ������� �� ������ Cancel.

ERROR_OPTION � ��� ������ ����� ��������� ������, ���� ������������ ������ ���������� ���� ���������.

����� showSaveDialog() ���������� �� �� ����� ����, �� ������ ��� �������� � ������ ����������. ������������ �������� ���������� ��� ���������� ����� � ����� ������ ��� ���. ����� ���������� ��������� ���� �� ����, ��� � showOpenDialog(). ���� ����� ���� ��� ���������� ������ �������, ����� ������ getFile() ������ ����, ���� ������������ ������ ��������� ����.

������� ����� � ����, ��� ��� ����� JFileChooser ������ �� ��������� � �� ���������. �� ������ ���������� ���� � ���������� ������������� �����. � ������� ��� ��� ��������� ���� � �������� ����� ������ ��� ���� ���������.

����� setDialogTitle(String title) ��������� ������ ���� ���������.