Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    ГЛАВА 11
    Размещение компонентов

    В предыдущей главе мы размешали компоненты "вручную", задавая их размеры и положение в контейнере абсолютными координатами в координатной системе контейнера. Для этого мы применяли метод setBounds().

    Такой способ размешает компоненты с точностью до пиксела, но не позволяет перемещать их. При изменении размеров окна с помощью мыши компоненты останутся на своих местах, привязанными к левому верхнему углу контейнера. Кроме того, нет гарантии, что все мониторы отобразят компоненты так, как вы задумали.

    Чтобы учесть изменение размеров окна, надо задать размеры и положение компонента относительно размеров контейнера, например, так:

    int w = getSizef).width;              // Получаем ширину 

    int h = getSizeO.height;             //и высоту контейнера 

    Button Ь = new Button("OK"); // Создаем кнопку 

    b.setBounds(9*w/20, 4*h/5, w/10, h/10);

    и при всяком изменении размеров окна задавать расположение компонента заново.

    Чтобы избавить программиста от этой кропотливой работы, в библиотеку AWT внесены два интерфейса: LayoutManager и порожденный от него интерфейс LayoutManager2, а также пять реализаций этих интерфейсов: классы BorlerLayout, CardLayout, FlowLayout, GridLayout И GridBagLayout. Эти классы названы менеджерами размещения (layout manager) компонентов.

    Каждый программист может создать свои менеджеры размещения, реализовав интерфейсы LayoutManager или LayoutManager2.

    Посмотрим, как размещают компоненты эти классы.

    Менеджер FlowLayout

    Наиболее просто поступает менеджер размещения FlowLayout. Он укладывает в контейнер один компонент за другим слева направо как кирпичи, переходя от верхних рядов к нижним. При изменении размера контейнера "кирпичи" перестраиваются, как показано на рис. 11.1. Компоненты поступают в том порядке, в каком они заданы в методах add ().

    В каждом ряду компоненты могут прижиматься к левому краю, если в конструкторе аргумент align равен FlowLayout. LEFT, к правому краю, если этот аргумент FlowLayout. RIGHT, или собираться в середине ряда, если FlowLayout.CENTER.

    Между компонентами можно оставить промежутки (gap) по горизонтали hgap и вертикали vgap. Это задается в конструкторе:

    FlowLayout(int align, int hgap, int vgap)

    Второй конструктор задает промежутки размером 5 пикселов:

    FlowLayout(int align)

    Третий конструктор определяет выравнивание по центру и промежутки 5 пикселов:

    FlowLayout()

    После формирования объекта эти параметры можно изменить методами:

    setHgapfint hgap) setVgap(int vgap) setAlignment(int align)

    В листинге 11.1 создаются кнопка Button, метка Label, кнопка выбора checkbox, раскрывающийся список choice, поле ввода TextFieid и все это размещается в контейнере Frame. Рис. 11.1 содержит вид этих компонентов

    при разных размерах контейнера. 

    Листинг 11.1 . Менеджер размещения FlowLayout 

    import j ava.awt.*; 

    import j ava.awt.event.*;

    class FlowTest extends Frame{ 

    FlowTest(String s) { 

    super(s);

    setLayout (new FlowLayout (FlowLayout.LEFT, 10, 10)); 

    add(new Button("Кнопка")); 

    add(new Label("Метка")); 

    add(new Checkbox("Выбор"));

    add(new Choice()); 

    add(new TextFieldt"Справка", 10)); 

    setSize(300, 100); setVisible(true); 

    public static void main(String[] args){

    Frame f= new FlowTest(" Менеджер FlowLayout"); 

    f.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent ev){

    System.exit(0); 

    }

    }); 

    }

    Рис. 11.1. Размещение компонентов с помощью FlowLayout

     

    -
    



    Copyright © vzlom-1.ru 2020-2023