Este artículo presenta cómo usar el modo sin cabeza en la plataforma Java (Java SE, también conocida como la plataforma J2SE).
El modo sin cabeza es una configuración del sistema cuando falta la pantalla, el teclado o el mouse. Suena increíble, pero de hecho puede completar diferentes operaciones en este modo, incluso con datos gráficos.
¿Dónde puedo usar este modelo? Piense en su aplicación generando constantemente una imagen. Al crear imágenes, no debe aplicar ni la pantalla ni el teclado. Supongamos que su aplicación ahora tiene una arquitectura principal o un servidor patentado, pero este servicio no tiene pantalla, teclado o mouse. La decisión ideal es utilizar una gran cantidad de potencia informática visual en lugar de características no visuales. La imagen generada en el modo sin cabeza se puede pasar al sistema principal para una representación más profunda.
Hay muchos métodos en Java.AWT.Toolkit y Java.AWT.GRAPHICSEnvironment Class. Pero algunas categorías, como el lienzo y el panel, se pueden ejecutar en el modo sin cabeza. Después de la plataforma J2SE 1.4, proporciona soporte para el modo sin cabeza.
Nota: Este artículo se centra en el documento de la versión de la plataforma Java SE6. Cualquier API u otras plataformas Java SE mejoradas son revisadas y aprobadas por el grupo de expertos JSR270 (JSR 270 Expert Group).
Kit de herramientas
Java.awt.Toolkit La clase es una clase madre abstracta del kit de herramientas de ventana abstracta (AWT). Las subclases de Toolkit se utilizan para unir varios componentes AWT a un kit de herramientas local específico.
Muchos componentes se verán afectados si el dispositivo, el teclado o el mouse no son compatibles. Un constructor adecuado debe lanzar una excepción de Excepción sin cabeza:
Este componente de peso pesado requiere una función gráfica de nivel de pares para soportarlo.
Los componentes relacionados con el lienzo, el panel y los componentes de la imagen no necesitan lanzar las anormalidades de la Excepción sin cabeza, porque estos componentes pueden usar funciones vacías a nivel del sistema operativo, y luego procesarse como componentes livianos.
El kit de herramientas de la cabeza también une los componentes Java a los recursos locales, pero solo lo hará solo cuando el recurso no incluya dispositivos de visualización o dispositivos de entrada.
Entorno gráfico
La clase de Java.AWT.GraphicSenValonment es una clase abstracta que describe una colección de objetos de desarrollo gráfico y objetos de fuentes que se pueden usar en la tecnología Java en una plataforma determinada. Los recursos en GraphicSenvalonment pueden ser equipos locales o de largo rango. El objeto GraphicSdevice puede ser una visualización, una memoria caché de impresora o gráficos, y son el objetivo de la función de dibujo Graphics2D. Cada Devicio de Graphics tiene muchos objetos de Configuración de Graphics relacionados con él. Estos objetos especifican diferentes entornos de configuración, y GraphicsDevice se puede usar en estos entornos de configuración.
La Tabla 1 muestra el método GraphicSenValonment, verifique el soporte del modo sin cabeza
Tabla 1. Método de modo sin cabeza
Nota: El método ISHEADLESS () verifica atributos del sistema específicos, java.awt.headless en lugar de la configuración del hardware del sistema.
El código lanzado por HeadlessException depende de la pantalla, el teclado y el mouse como un entorno que no admite ninguno de estos.
Establezca el modo sin cabeza
Use el modo sin cabeza para operar, primero debe comprender cómo verificar y establecer los atributos del sistema relacionados con esto. Además, debe comprender cómo crear una clase de implementación sin cabeza para usar una barra de herramientas.
Configuración del atributo del sistema
Para habilitar el modo sin cabeza, debe usar el método setProperty () para establecer los atributos del sistema correspondientes. Este método le permite establecer el atributo del sistema con el valor esperado.
System.SetProperty ("java.awt.headless", "verdadero");En el código anterior, Java.awt.headless es un atributo del sistema, y True es el valor que establecemos.
Si desea utilizar el entorno sin cabeza y tradicional en uno de los mismos programas, puede usar la siguiente línea de comandos para completar:
java -djava.awt.headless = verdadero
Cree el kit de herramientas predeterminado
Si los atributos del sistema del nombre de Java.awt.headless se establecen en verdadero, se utilizará el kit de herramientas sin cabeza. A continuación, use el método getDefaultToolkit () para crear una instancia de una herramienta sin cabeza:
Toolkit tk = toolkit.getDefaultToolkit ();
Verificación del modo sin cabeza
Para verificar la usabilidad del modo Headess, use el método iSheadless () de la clase GraphicSenvironment ::
GraphicSenvironment GE = GraphicSenvironment.getLocalGraphicSenvironment ();
Este método verifica los atributos del sistema Java.awt.less. Si este atributo tiene un valor verdadero, arrojará una explicación sin cabeza de un kit de herramientas y dependencia de una clase de pantalla gráfica de pantalla de pantalla, teclado y mouse.
Operación en el modo sin cabeza
Después de configurar el modo sin cabeza y crear una instancia del kit de herramientas sin cabeza, su aplicación puede realizar las siguientes operaciones:
Lienzo (lienzo)
El siguiente código dibujará un área rectangular en blanco en la pantalla, y puede dibujar líneas en él. Puede usar la clase Canvas para crear un nuevo componente de lienzo.
Canvas C = new Canvas () {Public Void Paint (Graphics G) {Rectangle R = GetBounds (); , R.Width -1, 0);}};Fuentes (fuente)
Este código muestra cómo usar la fuente para dibujar una cadena de texto y establecer la fuente del texto. El objeto gráfico se usa para dibujar esta cadena.
PUBLIC VOID PINTURA (GRÁFICOS G) {G.SetFont (New Font ("Arial", Font.italic, 12); G.DrawString ("Test", 32, 8);}
Bandera
Este código muestra cómo usar los valores rojos, verdes y azules especificados para establecer el color de una línea. El objeto gráfico se usa para dibujar esta línea.
PUBLICACIÓN PUBLICACIÓN (GRÁFICOS G) {G.SetColor (nuevo color (255, 127, 0));Imágenes
En el siguiente código, el método Read () de la clase javax.imageio.imageio decodificó el archivo Grapefruit.jpg que se muestra en la Figura 1 y devolvió una imagen de caché.
Imagen i = NULL;
Figura 1. archivo de imagen grapefruit.jpg
Imprimir
Este código demuestra cómo imprimir el lienzo disponible, puede usar el método de pintura para personalizar la pantalla predeterminada de la impresora.
PrinterJob PJ = PrinterJob.getPrinterJob (); )
Bip
El siguiente código muestra el método de pitido si se utiliza el método de pitido de la clase de kit de herramientas.
Toolkit tk = toolkit.getDefaultToolkit ();
Ejemplo simple de usar el modo sin cabeza
El siguiente ejemplo de HeadlessBasics usa todas las funciones descritas en el artículo.
Para ejecutar este ejemplo, debe usar JAVAC para compilar el siguiente código. Copie el archivo de imagen Grapefruit.jpg en el directorio donde se encuentra la clase de Basics de Headless.
Import java.awt.*; // Llame a esto antes de que el kit de herramientas se haya inicializado, es decir, // antes de la herramienta. La propiedad se establece en verdad, esta // será la aneta de la cabeza también. GraphicSenvironment.getLocalgraphicsVirorOnment (); ; Panel está permitido. Println ("se crea el botón:" + creado); .Height -1); y fuentes G.SetFont (nueva fuente ("Arial", Font.italic, 12); G.DrawString ("Test", 32, 8);}; // y todas las operaciones funcionan correctamente. C.SetBounds (32, 32, 128, 128); .PrintStackTrace (System.err);} Imagen final IM = I; (PageIndex> 0) {Ret Urn imprimable.no_such_page;} ((Graphics2d) G). Pinte la imagen. Z) {Z.PrintStackTrace (System.err);}}}}}}}La Figura 2 muestra el resultado de la impresión en este ejemplo.
Figura 2. Salida de impresión de Basics de Headless.
Además, puede ver la siguiente información:
Modo sin cabeza: TrueJava.AWT.headlessExceptionAt java.awt.Graphicsenvironment.Checkheadless (fuente desconocida) en Java.awt.Window) en Java.awt.frame. Java: 24) Se crea el marco: falsejava.head.headlessexception java.awt.graphicsenvalonment.checkheadless (fuente desconocida) t java.awt.button. se crea: falso
Nota: Para el propósito de la demostración, el código inicial hará que esta aplicación arroje 2 Java.AWT.headlessExcepciones anormalidades.
Como sustituto de la forma anterior, puede colocar la información de salida estándar en un archivo e imprimir el archivo. En este caso, use la siguiente línea de comando para ejecutar este ejemplo:
Java HeadlessBasics 2> Standard_output.txt
Convierta la aplicación existente en el modo sin cabeza.
¿Cómo se convierte la aplicación existente en modo ejecutable sin cabeza? La forma más efectiva de ejecutar esta conversión es analizar su código fuente para determinar que cualquier función depende del modo sin cabeza. En otras palabras, para realizar las mismas características, debe encontrar la clase y los métodos que lanzarán la excepción de la Excepción de Headless, y luego usar el modo sin cabeza independiente para reemplazar estas clases y métodos.
Puede usar la API Java SE 6 para explicar para determinar si una clase o método específico admite el modo sin cabeza. Si un componente específico no admite el modo sin cabeza, la única anormalidad que su programa necesita capturar es la Excepción sin cabeza. Se arroja antes de otras posibles anormalidades. Es por eso que no hay una necesidad especial para capturar otras anormalidades en el ejemplo del código de esta sección: use el modo sin cabeza ".
Definitivamente encontrará los beneficios de otros métodos útiles para usar el modo sin cabeza. Esperamos que este artículo pueda ayudarlo a completar esta tarea y jugar un mundo nuevo en la plataforma Java SE.