|
Читайте также: |
Контейнер JPanel — это невидимый компонент графического интерфейса, служащий для объединения нескольких других компонентов в один объект типа JPanel.
Конструкторы:
JPanel () — создает контейнер с менеджером размещения по умолчанию FlowLayout
JPanel (LayoutManager layout) — создает контейнер с указанным менеджером размещения компонентов layout.
После создания контейнера в него добавляются компоненты унаследованным методом add ():
JPanel p = new JPanel();
p.add(comp1);
p.add(comp2);
С панелями (и другими контейнерами) тесно связано использование специальных классов,так называемых менеджеров расположения (layout managers), которые позволяют автоматически определять местоположение и размеры компонентов внутри панели.
Основная идея LayoutManager состоит в том, что программисту предоставляется уже готовые варианты размещения компонентов на экране стандартные Layout managers, а также дается возможность самому описать механизм (алгоритм) который будет корректно обрабатывать такую ситуацию.
Любой контейнер (Container и его подклассы) имеет метод setLayout(LayoutManager mgr). Задавая новый layout manager сообщается контейнеру, какой алгоритм он должен использовать при размещении компонентов
Методы
getMaximumSize() – возвращает максимально допустимый размер компонента.
getMinimumSize() – возвращает минимально допустимый размер компонента.
getPrefferedSize() – возвращает наиболее предпочтительный размер компонента
Рассмотрим основные виды размещения:
--FlowLayout
--BorderLayout
-- GridLayout
-- GridBagLayout
-- CardLayout
-- BoxLayout
JPanel pane = new JPanel();
pane.setLayout(new BorderLayout());
FlowLayout укладывает в контейнер один компонент за другим слева направо, переходя от верхних рядов к нижним.
При изменении размера контейнера компоненты перестраиваются.
Компоненты поступают в том порядке, в каком они заданы в методах add ().
В каждом ряду компоненты могут прижиматься к левому краю,если в конструкторе аргумент align равен FlowLayout. LEFT, к правому краю, если этот аргумент FlowLayout. RIGHT, или собираться в середине ряда, если FlowLayout.CENTER.
Между компонентами можно оставить промежутки (gap) по горизонтали hgap и вертикали vgap.
Это задается в конструкторе:
FlowLayout(int align, int hgap, int vgap)
Второй конструктор задает промежутки размером 5 пикселов:
FlowLayout(int align)
Третий конструктор определяет выравнивание по центру и промежутки 5 пикселов:
FlowLayout()pane.setLayout (new FlowLayout(FlowLayout.LEFT,10,10));
BorderLayout делит контейнер на пять неравных областей, полностью заполняя каждую область одним компонентом, как показано
Области получили географические названия NORTH, SOUTH, WEST, EAST И CENTER

Метод add о в случае применения BorderLayout имеет два аргумента:
ссылку на компонент соmр
и область region, в которую помещается компонент — одну из перечисленных выше констант:
add(Component comp, String region)
Обычный метод add (Component comp) с одним аргументом помещает компонент в область CENTER.
Менеджер размещения BorderLayout кажется неудобным: он располагает не больше пяти компонентов, последние растекаются по всей области, области имеют странный вид.
Но дело в том, что в каждую область можно поместить не компонент, а панель, и размещать компоненты на ней
GridLayout расставляет компоненты в таблицу с заданным в конструкторе числом строк rows и столбцов columns:
GridLayout(int rows, int columns)
Все компоненты получают одинаковый размер. Промежутков между компонентами нет.
Второй конструктор позволяет задать промежутки между компонентами в пикселах по горизонтали hgap и вертикали vgap:
GridLayout(int rows,int columns,int hgap,int vgap)
Компоненты размещаются менеджером GridLayout слева направо по строкам созданной таблицы в том порядке, в котором они заданы в методах add().
GridBagLayout расставляет компоненты наиболее гибко, позволяя задавать размеры и положение каждого компонента. Но он оказался очень сложным и применяется редко.
В классе GridBagLayout есть только один конструктор по умолчанию, без аргументов. Менеджер класса GridBagLayout, в отличие от других менеджеров размещения, не содержит правил размещения. Он играет только организующую роль.
Ему передаются ссылка на компонент и правила расположения этого компонента, а сам он помещает данный компонент по указанным правилам в контейнер. Все правила размещения компонентов задаются в Объекте другого класса, GridBagConstraints.
Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов.
Один компонент может занимать несколько ячеек этой таблицы, заполнять ячейку целиком, располагаться в ее центре, углу или прижиматься к краю ячейки.
CardLayout — показывает в контейнере только один, первый (first),компонент. Остальные компоненты лежат под первым в определенном порядке как игральные карты в колоде. Их расположение определяется порядком, в котором написаны методы add ().
Следующий компонент можно показать методом next (Container с), предыдущий — методом previous (Container с),последний— методом last (Container с), первый — методом first (Container с).
Аргумент этих методов — ссылка на контейнер, в который помещены компоненты, обычно this.
Конструкторы
СardLayout () — не отделяет компонент от границ контейнера;
CardLayout (int hgap, int vgap) — задает горизонтальные hgap и вертикальные vgap поля.
BoxLayout Позволяет располагать компоненты вдоль одной из осей – вертикально или горизонтально.В конструкторе указывается, какой вариант предпочитает использовать программист.
Кнопки, иерархия классов, свойства, конструкторы и методы.*
Все кнопки и переключатели библиотеки Swing унаследованы от класса AbstractButton, который содержит большую коллекцию методов общих для всех кнопок.
Свойства
--action-ассоциированное событие
--actionCommand-название команды
--text-надпись на кнопке
--enabled-разрешено ли нажимать
--icon, disabledIcon,pressedIcon-иконки
--horizontal(vertical)Alighment-выравнивание текста и иконки
----horizontal(vertical)TextPosition-положение ьекста относительно иконки
--margin-отступы
Конструкторы
Имеется несколько конструкторов класса JButton, позволяющих создавать кнопки, на которых может быть изображен текст, рисунок, рисунок и текст одновременно или ничего не изображено.Для того, чтобы командная кнопка содержала изображение рисунка, в качестве параметра конструктора JButton необходимо использовать объект, реализующий интерфейс Icon – как правило, это класс ImageIcon:
public JButton()
public JButton(String s)
public JButton (Icon icon)
public JButton (String s, Icon icon)
Методы
--void setText(String str)-установить надпись на кнопке
--String getText()-считать надпись на кнопке
--void setIcon()- установить пиктограмму
--Icon getIcon()- считать пиктограмму
--void setHorizontalAligment(int)-установить горизонтальное выравнивание кнопки(константами LEFT,CENTER,RIGHT)
--void setVerticalAlighment(int)-установить вертикальное выравнивание кнопки(константами TOP, CENTER, BOTTOM)
-- void setHorizontalTextPosition()int-установить горизонтальное выравнивание относительно отображаемой на кнопке пиктограмме(константами LEFT, RIGHT, CENTER)
--void setVerticalTextPosition(int)-установить вертикальное выравнивание текста относительно отображаемой на кнопке пиктограмме(константы TOP, CENTER, BOTTOM)
--void setActionCommand(String)-установить имя команды, выполняемой при нажатии на кнопку
--void setMnemonic(char)-установить клавишную комбинацию для нажатия кнопки
Пример
public class ButtonPanel extends JPanel {
public ButtonPanel () {
JButton myButton = new JButton("Tiger"); add(myButton);}}
public class ButtonPanel extends JPanel { public ButtonPanel() {
Icon tigerIcon = new ImageIcon("SmallTiger.gif");
JButton myButton = new JButton("Tiger", tigerIcon);
add(myButton); } }
Дата добавления: 2015-09-11; просмотров: 117 | Поможем написать вашу работу | Нарушение авторских прав |