В этой статье представлено, как использовать режим без головы на стандартной платформе Java (Java SE, также известной как J2SE).
Безголовный режим - это конфигурация системы, когда отсутствует дисплей, клавиатура или мышь. Это звучит невероятно, но на самом деле вы можете выполнить различные операции в этом режиме, даже с графическими данными.
Где я могу использовать эту модель? Подумайте о своем приложении, постоянно генерируемом изображением. При создании изображений вы не должны применять ни дисплей, ни клавиатуру. Давайте предположим, что ваше приложение теперь имеет основную архитектуру или проприетарное сервер, но в этой службе нет дисплея, клавиатуры или мыши. Идеальное решение состоит в том, чтобы использовать большое количество визуальной вычислительной мощности вместо не -визуальных характеристик. Изображение, сгенерированное в режиме без головы, может быть передана в головную систему для более глубокого рендеринга.
Есть много методов в классе Java.awt.toolkit и Java.awt.graphicsEnvironment. Но некоторые категории, такие как холст и панель, могут быть выполнены в режиме без головы. После платформы J2SE 1.4 она обеспечивает поддержку безголового режима.
Примечание. Эта статья посвящена документу версии платформы Java SE6. Любые API или другие расширенные платформы Java SE рассматриваются и утверждаются экспертной группой JSR270 (JSR 270 Expert Group.).
Инструментарий
Java.awt.toolkit Class - это абстрактный родительский класс абстрактного окна Toolkit (AWT). Подклассы Toolkit используются для привязки различных компонентов AWT с конкретным локальным инструментарием.
Многие компоненты будут затронуты, если устройство, клавиатура или мышь не поддерживаются. Подходящий конструктор должен бросить исключение без головы:
Этот тяжеловесный компонент требует графической функции -выпира -пирога, чтобы поддержать ее.
Компоненты, связанные с компонентами Canvas, Panel и Image, не должны бросать аномалии без Head BlessException, поскольку эти компоненты могут использовать пустые функции на уровне операционной системы, а затем обрабатываются в виде легких компонентов.
Toolkit of Headless также связывает компоненты Java с местными ресурсами, но он будет делать это только тогда, когда ресурс не включает отображающие устройства или устройства ввода.
Графическая среда
Класс java.awt.graphicsenvalonment - это абстрактный класс, который описывает набор объектов графики и объектов шрифтов, которые можно использовать в технологии Java на данной платформе. Ресурсы в GraphicsEnvalonment могут быть местным или длинным оборудованием. Объектом GraphicsDevice может быть дисплеем, принтером или графическим кэшем, и они являются целью функции чертежа Graphics2D. Каждая GraphicsDevice имеет много объектов GraphicsConfiguration, связанных с ней. Эти объекты указывают различные среды конфигурации, и GraphicsDevice может использоваться в этих средах конфигурации.
В таблице 1 показан метод GraphicsEnvalonment, проверьте поддержку режима без головы
Таблица 1. Метод режима без головы
ПРИМЕЧАНИЕ. Метод isHeadless () Проверяет конкретные атрибуты системы, java.awt.leadless вместо конфигурации системного оборудования.
Код, брошенный без Headexception, зависит от дисплея, клавиатуры и мыши как среды, которая не поддерживает ни одного из них.
Установите режим без головы
Используйте режим без головы для работы, вы должны сначала понять, как проверить и установить атрибуты системы, связанные с этим. Кроме того, вы должны понимать, как создать класс реализации без головы для использования панели инструментов.
Конфигурация атрибута системы
Чтобы включить режим без головы, вам необходимо использовать метод SetProperty () для установки соответствующих атрибутов системы. Этот метод позволяет установить атрибут системы с ожидаемым значением.
System.SetProperty ("java.awt.leadless", "true");В приведенном выше коде Java.awt.leadless - это системный атрибут, а True - это значение, которое мы установили.
Если вы хотите использовать безголую и традиционную среду в одной из тех же программ, вы можете использовать следующую командную строку для завершения:
java -djava.awt.headless = true
Создайте инструментарий по умолчанию
Если атрибуты системы названия java.awt.leadless установлены на True, будет использоваться безголовный инструментарий. Далее используйте метод getDefaultToolkit () для создания экземпляра инструмента без головы:
Toolkit tk = toolkit.getDefaulttoolkit ();
Проверка режима без головы
Чтобы проверить удобство использования режима головы, используйте метод isHeadless () класса GraphicsEnvironment ::
GraphicsEnvironment ge = graphicsEnvironment.getlocalgraphicsEnvironment ();
Этот метод проверяет атрибуты системы беззакония java.awt. Если этот атрибут имеет значение True, он выбросит безголостную экспрессию из инструментария и зависимость от дисплея, клавиатуры и класса GraphicsEnvalonment Mouse.
Работа в режиме без головы
После настройки режима без головы и создания экземпляра безголового инструментария, ваше приложение может выполнять следующие операции:
Холст (холст)
Следующий код будет нарисовать чистую прямоугольную область на экране, и вы можете нарисовать линии на нем. Вы можете использовать класс Canvas для создания нового компонента Canvas.
Окончательный холст C = новый Canvas () {public void paint (графика g) {rectangle r = getBounds (); , R.width -1, 0);}};Шрифты (шрифт)
Этот код показывает, как использовать шрифт, чтобы нарисовать текстовую строку и установить шрифт текста. Графический объект используется для рисования этой строки.
Public Void Paint (Graphics G) {G.SetFont (New Font ("Arial", Font.italic, 12); G.DrawString ("test", 32, 8);}
Цвета
Этот код показывает, как использовать указанные значения красного, зеленого и синего цвета, чтобы установить цвет линии. Графический объект используется для проведения этой линии.
Public Void Paint (Graphics G) {G.SetColor (новый цвет (255, 127, 0));Изображения
В следующем коде метод read () класса javax.imageio.imageio декодировал файл Grapefruit.jpg, показанный на рисунке 1, и вернул картину кэша.
Изображение I = NULL;
Рисунок 1. Grapefruit.jpg -файл изображения
Печать
Этот код демонстрирует, как печатать доступный холст, вы можете использовать метод краски для настройки экрана по умолчанию принтера.
PrinterJob pj = printerjob.getprinterjob (); . Translate (pf.getimagablex (), pf.getimabley ());
Звуковой сигнал
В следующем коде показан метод звукового сигнала, если используется метод звучания класса Toolkit.
Toolkit tk = toolkit.getDefaulttoolkit ();
Простой пример использования режима без головы
В следующем примере без головного базы используются все функции, описанные в статье.
Чтобы запустить этот пример, вам нужно использовать Javac для составления следующего кода. Скопируйте файл изображения Grapefruit.jpg в каталог, где находится класс без Headbasics.
Импорт java.awt.*; // Вызовите это до того, как инструментарий инициализируется, то есть // до инструментария. Свойство устанавливается на True, // также станет бездействующим График. ; Панель разрешена. Println (кнопка создана: « + Создано); . HheEight -1); и шрифты G.SetFont (новый шрифт («Arial», Font.italic, 12); G.DrawString («Тест», 32, 8);}; // и все операции работают правильно. C.SetBounds (32, 32, 128, 128); .printstacktrace (System.err);} Окончательное изображение im = i; (PageIndex> 0) {ret urn printable.no_such_page;} ((Graphics2d) g) .translate (pf.getimagablex (), pf.getimabley ()); Нарисуйте изображение. Z) {z.printstacktrace (System.err);}}}}}}}На рисунке 2 показан результат печати в этом примере.
Рисунок 2. Вывод печати без головы.
Кроме того, вы можете увидеть следующую информацию:
Безголовный режим: TrueJava.awt.headlessexceptionat java.awt.graphicsenvironment.checkhead (неизвестный источник) в Java.awt.window. Java: 24) создан кадр: falsejava.head.headlessexception java.awt.graphicsenvalonment.checkhead (неизвестный источник) t java.awt.button. создан: ложь
ПРИМЕЧАНИЕ. Для целей демонстрации начальный код приведет к тому, что это приложение бросит 2 java.awt.weadlessexceptions.
В качестве замены предыдущего способа вы можете поместить стандартную выходную информацию в файл и распечатать файл. В этом случае используйте следующую командную строку, чтобы запустить этот пример:
Java HeadlessBasics 2> Standard_Output.txt
Преобразуйте существующее приложение в режим без головы.
Как преобразовать существующее приложение в исполняемый безголовный режим? Наиболее эффективный способ выполнить это преобразование - проанализировать исходный код, чтобы определить, что любая функция зависит от режима без головы. Другими словами, чтобы реализовать те же функции, вы должны найти класс и методы, которые бросят исключение без головы, а затем использовать независимый режим без головы, чтобы заменить эти классы и методы.
Вы можете использовать API Java SE 6, чтобы объяснить, чтобы определить, поддерживает ли конкретный класс или метод. Если конкретный компонент не поддерживает режим без головы, единственная ненормалия, которую необходима ваша программа для захвата, - это безголов. Он выброшен перед другими возможными нарушениями. Вот почему нет особой необходимости захватить другие нарушения в примере этого раздела: используйте режим без головы ».
Вы обязательно найдете преимущества других полезных методов для использования безголостного режима. Мы надеемся, что эта статья поможет вам выполнить эту задачу и сыграть новый мир на платформе Java SE.