Программирование мобильных телефонов на 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


     

     

    Класс BasicStroke

    Конструкторы класса BasicStroke определяют характеристики пера. Основной конструктор

    BasicStroke(float width, int cap, int join, float miter, float[] dash, float dashBegin)

    задает:

    • толщину пера width в пикселах;
    • оформление конца линии cap; это одна из констант:
      • CAP_ROUND — закругленный конец линии;
      • CAP_SQUARE — квадратный конец линии;
      • CAP_BUTT — оформление отсутствует;
    • способ сопряжения линий join; это одна из констант:
      • JOIN_ROUND — линии сопрягаются дугой окружности;
      • JOIN_BEVEL — линии сопрягаются отрезком прямой, перпендикуляр-ным биссектрисе угла между линиями;
      • JOIN_MITER — линии просто стыкуются;
    • расстояние между линиями miter, начиная с которого применяется сопряжение JOIN_MITER;
    • длину штрихов и промежутков между штрихами — массив dash; элементы массива с четными индексами задают длину штриха в пикселах, элементы с нечетными индексами — длину промежутка; массив перебирается циклически;
    • индекс dashBegin, начиная с которого перебираются элементы массива
    • dash.

    Остальные конструкторы задают некоторые характеристики по умолчанию:

    • BasicStroke (float width, int cap, int join, float miter) — сплошная линия;
    • BasicStroke (float width, int cap, int join) — сплошная линия с сопряжением JOIN_ROUND или JOIN_BEVEL; для сопряжения JOIN_MITER задается значение miter = 10.0f;
    • BasicStroke (float width) — прямой обрез CAP_SQUARE и сопряжение JOIN_MITER со значением miter = 10.0f; 
    • BasicStroke () — ширина1. 0f.

    Лучше один раз увидеть," чем сто раз прочитать. В листинге 9.4 определено пять перьев с разными характеристиками, рис, 9.4 показывает, как они рисуют.

    Листинг 9.4. Определение перьев

    import j ava.awt.*;

    import j ava.awt.geom. *;

    import j ava.awt.event.*;

    class StrokeTest extends Frame{ 

    StrokeTest(String s) { 

    super (s) ;

    setSize(500, 400); 

    setvisible(true); 

    addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent ev)(

    System.exit(0); 

    }

    }); 

    }

    public void paint(Graphics gr){ 

    Graphics2D g = (Graphics2D)gr; 

    g.setFont(new Font("Serif", Font.PLAIN, 15)); 

    BasicStroke penl = new BasicStroke(20, BasicStroke.CAP_BUTT,

    BasicStroke.JOIN_MITER,30); 

    BasicStroke pen2 = new BasicStroke(20, BasicStroke.CAP_ROUND,

    BasicStroke.JOIN_ROUND); 

    BasicStroke репЗ = new BasicStroke(20, BasicStroke.CAP_SQUARE,

    BasicStroke.JOIN_BEVEL); 

    floatf] dashl = {5, 20}; 

    BasicStroke pen4 = new BasicStroke(10, BasicStroke.CAP_ROUND,

    BasicStroke.JOIN_BEVEL, 10, dashl, 0); 

    float[] dash2 = (10, 5, 5, 5};

    BasicStroke pen5 = new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10, dash2, 0);

    g.setStroke(penl);

    g.draw(new Rectangle2D.Double(50, 50, 50, 50));

    g.draw(new Line2D.Double(50, 180, 150, 180));

    g.setStroke(pen2);

    g.draw(new Rectangle2D.Double(200, 50, 50, 50));

    g.draw(new Line2D.Double(50, 230, 150, 230));

    g.setStroke(реnЗ);

    g.draw(new Rectangle2D.Double(350, 50, 50, 50));

    g.draw(new Line2D.Double(50, 280, 150, 280));

    g.drawstring("JOIN_MITER", 40, 130);

    g.drawstring("JOIN_ROUND", 180, 130);

    g.drawstring("JOINJBEVEL", 330, 130);

    g.drawstring("CAP_BUTT", 170, 190);

    g.drawstring("CAP_ROUND", 170, 240);

    g.drawstring("CAP_SQUARE", 170, 290);

    g.setStroke(pen5);

    g.drawfnew Line2D.Double(50, 330, 250, 330)); 

    g.setStroke(pen4);

    g.draw(new Line2D.Double(50, 360, 250, 360)); 

    g.drawString("{10, 5, 5, 5,...}", 260, 335); 

    g.drawstring( "(5, 10,...}", 260, 365); 

    public static void main(String[] args){

    new StrokeTest("Моя программа"); 

    }

    Рис. 9.4. Перья с различными  характеристиками

    После создания пера одним из конструкторов и установки пера методом setStroke о можно рисовать различные фигуры методами draw() и fill().

    Общие свойства фигур, которые можно нарисовать методом draw о класса Graphics2D, описаны в интерфейсе shape. Этот интерфейс реализован для создания обычного набора фигур — прямоугольников, прямых, эллипсов, дуг , точек — классами Rectangle2D, RoundRectangle2D, Line2D, Ellipse2D, Arc2D, Point2D пакета java.awt.geom. В этом пакете есть еще классы Cubiccurve2D и QuadCurve2D для создания кривых третьего и второго порядка.

    Все эти классы абстрактные, но существуют их реализации — вложенные классы Double и Float для задания координат числами соответствующего типа. В Листинге 9.4 использованы классы Rectangle2D.Double И Line2d.Double для вычерчивания прямоугольников и отрезков.

    В пакете java.awt.geom есть еще один интересный класс — GeneralPath. Объекты этого класса могут содержать сложные конструкции, составленные из отрезков прямых или кривых линий и прочих фигур, соединенных или не соединенных между собой. Более того, поскольку этот класс реализует интерфейс shape, его экземпляры сами являются фигурами и могут быть элементами других объектов класса GeneralPath.

     

    -
    



    Copyright © vzlom-1.ru 2020-2021