// Устанавливаем размеры всего содержимого контейнера pCons.setConstraint(SpringLayout.EAST, Spring.sum(currX, yPad)); pCons.setConstraint(SpringLayout.SOUTH, Spring.sum(maxHeight, yPad));
pack();
setDefaultCloseOperation(EXIT ON CLOSE); setVisible(true);
}
public static void main(String args[]){ new SpringWin();
}
}
Рис. 14.9. Размещение SpringLayout |
Класс JToolBar создает панели инструментальных кнопок. Обычно такая панель занимает строку ниже строки меню или столбец слева. Очень часто панель делают плавающей — ее можно перемещать по экрану — или всплывающей.
Пустая горизонтальная панель создается конструктором JToolBar ().
Конструктор JToolBar (int) задает расположение панели: горизонтальное — константа horizontal, вертикальное — константа vertical.
Конструктор JToolBar(string) определяет заголовок горизонтальной панели.
Наконец, конструктор JToolBar(string, int) определяет заголовок и расположение панели.
Документация Java SE рекомендует управлять контейнером, в который помещают панель инструментов, с помощью менеджера размещения BorderLayout и ничего не помещать в граничные области этого контейнера. В этом случае панель чаще всего помещают на "север". Слева (сверху) панели имеется полоса с "насечкой". Она видна на рис. 14.10. Наведя курсор мыши на эту полосу, панель можно перемещать по контейнеру. При перенесении панели на "запад", "восток" или на "юг", она занимает эту область, располагая свои компоненты по вертикали или по горизонтали. При перенесении панели в "центр" или вынесении ее за окно контейнера, панель автоматически оформляется в отдельное окно класса JFrame. В строке заголовка отдельного окна появляется строка, заданная в конструкторе. Полоса с "насечкой" сохраняется в этом окне, с ее помощью можно вернуть панель на прежнее место. Панель возвращается на свое первоначальное место и при закрытии ее окна.
Панель инструментов можно сделать неперемещаемой методом setFloatable(false). Полоска с "насечкой" исчезает, панель нельзя передвигать по экрану.
Обычно инструментальные кнопки на панели обведены тонкой рамкой, как на Панели 2 рис. 14.10, но после применения метода setRollover(true) рамка будет появляться только при наведении курсора мыши на кнопку.
Рис. 14.10. Инструментальные панели |
Для расположения компонентов класс JToolBar применяет свой внутренний менеджер размещения DefaultToolBarLayout, основанный на менеджере BoxLayout, следовательно, панель инструментов может использовать свойства этого менеджера размещения. Листинг 14.10 дает пример создания панели инструментов.
Листинг 14.10. Панели инструментальных кнопок
import java.awt.*; import javax.swing.*;
public class MyTool extends JFrame{
MyTool(){
super(" Инструментальные панели");
JToolBar tb1 = new JToolBar(" Панель 1"), tb2 = new JToolBar(" Панель 2");
tb1.setRollover(true);
tb1.add(new JButton(new ImageIcon("Add24.gif"))); tb1.add(new JButton(new ImageIcon("AlignTop24.gif"))); tb1.add(new JButton(new ImageIcon("About24.gif")));
tb2.add(new JButton("Первая")); tb2.add(new JButton("Вторая")); tb2.add(new JButton("Третья"));
add(tb1, Bo rde rLayout.NORTH); add(tb2, Bo rde rLayout.WEST);
setSize(400, 400);
setDefaultCloseOperation(EXIT ON CLOSE);
setVisible(true);
}
public static void main(String[] args){ new MyTool();
}
}
В составе Java SE в каталоге $JAVA_HOME/demo/jfc/Notepad/ есть пример текстового редактора с панелью инструментальных кнопок класса JToolBar. Его можно запустить, перейдя в этот каталог и набрав в командной строке
java -jar Notepad.jar
На панель инструментов можно поместить любой компонент методом add(Component), но, как правило, на ней располагаются кнопки с ярлычками. Эти кнопки дублируют некоторые, чаще всего используемые, пункты меню. Для того чтобы облегчить связь кнопок и пунктов меню с их действиями, в библиотеке Swing разработан интерфейс Action.
Интерфейс
Интерфейс Action разработан для того, чтобы собрать в одном месте все, относящееся к какому-то действию: командную клавишу, клавишу-ускоритель, изображение-ярлык, строку описания в пункте меню, всплывающую подсказку.
Он расширяет интерфейс ActionListener, добавляя к его единственному методу
actionPerformed (ActionEvent) несколько статических полей класса String- имен опреде
ляемых интерфейсом объектов — и методы определения этих полей putValue(string
key, Object value), getValue(String key).
Интерфейс описывает объекты с такими именами:
□ ACCELERATOR_KEY-имя клавиши-ускорителя, объекта класса Keystroke;
□ ACTION_COMMAND_KEY имя командной клавиши класса KeyMap;
□ default — строка значений по умолчанию;
□ displayed_mnemonic_index_key — целое число, индекс действия;
□ large_icon_key — имя изображения;
□ long_description — описание действия для всплывающей справки;
□ mnemonic_key — код командной клавиши типа int;
□ name — имя действия, записываемое в пункт меню;
□ selected_key — выбранное значение;