Page 144 - 4836
P. 144
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 ));
142