1. PROGRAMACIÓN APPLET
Una applet es un fichero de clase que se escribe específicamente para visualizar gráficos en la red Internet. Las applets se incluyen en las páginas Web utilizando la etiqueta HTML (APPLET). Cuando se ejecutan en una página Web, las applets de Java se descargan automáticamente y el browser las ejecuta, visualizándose en el espacio de la página que se ha reservado para ellas. Pueden hacer de todo, desde trabajar con gráficos hasta visualizar animaciones, gestionar controles (como los que veremos funcionar en este capítulo), cuadros de texto y botones.
El uso de las applets hace que las páginas Web sean activas, no pasivas, que es su principal atracción.
Cuando se trabaja con AWT, el proceso es como sigue: se crea una applet nueva, basándola en la clase java.applet.App1et que, a su vez, está basada en la clase Component de AWT. He aquí un ejemplo que hemos visto antes y que haremos de nuevo en este capítulo. Este ejemplo visualiza el texto "¡Hola desde Java!" en una página Web:
import java.applet.Applet;
import java.awt.*;
public class applet extends Applet
{
public void paint (Graphics g)
{
g.drawString ("¡Hola desde Java!", 60, 100);
La applet se compila en un fichero de bytecode con extensión ".class".
Una vez que se tiene este fichero, se sube a un proveedor de servicios de la red Internet (ISP).
2. PROGRAMACIÓN EN AUTÓNOMO
Todo en Java está dentro de una clase, incluyendo programas autónomos.
Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. Por ejemplo, una línea de comando (en Unix o Windows) de la forma java –cp. Hola ejecutará un programa (previamente compilado y generado como “Hola.class”). El nombre de la clase cuyo método main se llama puede especificarse también en el fichero “MANIFEST” del archivo de empaquetamiento de Java (.jar).
3. CARACTERISTICAS DE APPLET
o Se ejecutan sólo en la plataforma "cliente" de un sistema, como contraste de un servlet.
o A diferencia de las subrutinas, en los applets ciertas capacidades son restringidas por el contenedor (el navegador).
o Un applet está escrito en un lenguaje diferente del script o del HTML que lo invoca.
o Los applet son escritos en un lenguaje compilado, mientras que el lenguaje scripting del contenedor es un lenguaje interpretado. Esto permite mayor performance y potencia al applet.
o A diferencia de una subrutina, puede implementarse un componente web completo en forma de applet.
o A diferencia de un programa, no puede ejecutarse de forma independiente (necesita un programa contenedor).
Jerarquía de clases:
· java.lang.Object
· java.awt.Component
· java.awt.Container← java.awt.Panel ← java.applet.Applet
· Todos los applets derivan de java.applet.Applet
· No tiene un main() con el que comienza la ejecución
· Debe redefinir métodos heredados de Applet que controlan su ejecución:
· init(), start(), stop(), destroy()
· Hereda los métodos gráficos de Component, y la capacidad de añadir componentes de interface de usuario los hereda de Container y de Panel
· Suele redefinir el método gráfico paint()
4. CARACTERÍSTICAS DE AWT
* Los Contenedores contienen Componentes, que son los controles básicos
* No se usan posiciones fijas de los Componentes, sino que están situados a través de una disposición controlada (layouts)
* El común denominador de más bajo nivel se acerca al teclado, ratón y manejo de eventos
* Alto nivel de abstracción respecto al entorno de ventanas en que se ejecute la aplicación (no hay áreas cliente, ni llamadas a X, ni hWnds, etc.)
* La arquitectura de la aplicación es dependiente del entorno de ventanas, en vez de tener un tamaño fijo
* Es bastante dependiente de la máquina en que se ejecuta la aplicación (no puede asumir que un diálogo tendrá el mismo tamaño en cada máquina)
* Carece de un formato de recursos. No se puede separar el código de lo que es propiamente interface. No hay ningún diseñador de interfaces (todavía)
5. CARACTERÍSTICAS DE SWING
Esta lección ha explicado algunos de los mejores conceptos que necesitarás conocer para construir GUIs Swing -- el árbol de contenidos, el control de distribución, el manejo de eventos, el dibujado, y los threads. Además, hemos tocado tópicos relacionados, como los bordes. Esta sección explica algunas características Swing que no se han explicado todavía.
Características que ProporcionaJComponent
Excepto los contenedores de alto nivel, todos los componentes que empiezan con J descienden de la clase JComponent. Obtienen muchas características de esta clase, como la posibilidad de tener bordes, tooltips, y Aspecto y Comportamiento configurable. También heredan muchos métodos de conveniencia. Para más detalles, sobre lo que proporciona la clase JComponent puedes ver La clase JComponent
Iconos
Muchos componentes Swing -- principalmente los botones y las etiquetas -- pueden mostrar imágenes. Estas imágenes se especifican como objetos Icon. Puedes ver Cómo usar Iconos para ver instrucciones y una lista de ejemplos que usa iconos.
Actions
Con objetos Action, el API Swing proporciona un soporte especial para compartir datos y estados entre dos o más componentes que pueden generar eventos action. Por ejemplo, si tenemos un botón y un ítem de menú que realizan la misma función, podríamos considerar la utilización de un objeto Action para coordinar el texto, el icono y el estado de activado de los dos componentes. Para más detalles, puedes ver Cómo usar Actions.
Aspecto y Comportamiento Conectable
Un sencillo programa puede tener uno o varios aspectos y comportamientos. Se puede permitir que el usuario determine el aspecto y comportamiento, o podemos determinarlos programáticamente. Puedes ver Cómo seleccionar el Aspecto y Comportamiento para más detalles.
Soporte para Tecnologías Asistivas
Las tecnologías asisticas como los lectores de pantallas pueden usar el API de accesibilidad para obtener información sobre los componentes Swing. Incluso si no hacemos nada, nuestro programa Swing probablemente funcionará correctamente con tecnologías asistivas, ya que el API de accesibilidad está construido internamente en los componentes Swing. Sin embargo, con un pequeño esfuerzo extra, podemos hacer que nuestro programa funcione todavía mejor con tecnologías asistivas, lo que podría expandir el mercado de nuestro programa. Puedes ver Cómo Soportar Tecnologías Asistivas para más detalles.
Modelos de Datos y Estados Separados
La mayoría de los componentes Swing no-contenedores tienen modelos. Por ejemplo, un botón (JButton) tiene un modelo (ButtonModel) que almacena el estado del botón -- cuál es su mnemónico de teclado, si está activado, seleccionado o pulsado, etc. Algunos componentes tienen múltiples modelos. Por ejemplo, una lista (JList) usa un ListModel que almacena los contenidos de la lista y un ListSelectionModel que sigue la pista de la selección actual de la lista.
Normalmente no necesitamos conocer los modelos que usa un componente. Por ejemplo, casi todos los programas que usan botones tratan directamente con el objeto JButton, y no lo hacen en absoluto con el objeto ButtonModel.
Entonces ¿Por qué existen modelos separados? Porque ofrecen la posibilidad de trabajar con componentes más eficientemente y para compartir fácilmente datos y estados entre componentes. Un caso común es cuando un componente, como una lista o una tabla, contiene muchos datos. Puede ser mucho más rápido manejar los datos trabajando directamente con un modelo de datos que tener que esperar a cada petición de datos al modelo. Podemos usar el modelo por defecto del componente o implementar uno propio.
Para más información sobre los modelos, puedes visitar las páginas individuales de cada componente o La Anatomía de un Programa Basado en Swing que describe algunos modelos personalizados usados por el programa creado en esa sección.
6. CLASES DE AWT
Component
Container
LayoutManager
LayoutManager2
Panel
ScrollPane
Window
Frame
Dialog
Filedialog
Button
Canvas
Checkbox
Choice
Label
List
Scrollbar
TextComponent
TextField
TextArea
7. MÉTODOS RELACIONADOS A LA CLASE BOTTON
void addActionListener(ActionListener l)
ActionListener
AccessibleContext getAccessibleContext ()
String getActionCommand ()
String getLabel ()
EventListener [] getListeners (Class listenerType)
AddXXXListener ()
AddActionListener ( )
Void removeActionListener (ActionListener l)
Void setActionCommand (String command)
void setLabel(String label)
8. MÉTODOS RELACIONADOS A LA CLASE LABEL
ApplyStyle
ApplyStyleSheetSkin
CopyBaseAttributes
DataBind
Dispose
Equals
FindControl
Focus
GetHashCode
GetType
HasControls
MergeStyle
ReferenceEquals
RenderBeginTag
RenderControl
RenderEndTag
ResolveClientUrl
ResolveUrl
SetRenderMethodDelegate
ToString
Métodos protegidos
AddAttributesToRender
AddedControl
AddParsedSubObject
BuildProfileTree
ClearChildControlState
ClearChildState
ClearChildViewState
CreateChildControls
CreateControlCollection
CreateControlStyle
DataBind
DataBindChildren
EnsureChildControls
EnsureID
Finalize
FindControl
GetDesignModeState
HasEvents
IsLiteralContent
LoadControlState
LoadViewState
MapPathSecure
MemberwiseClone
OnBubbleEvent
OnDataBinding
OnInit
OnLoad
OnPreRender
OnUnload
OpenFile
RaiseBubbleEvent
RemovedControl
Render
RenderChildren
RenderContents
RenderControl
ResolveAdapter
SaveControlState
SaveViewState
SetDesignModeState
TrackViewState
9. MÉTODOS RELACIONADOS A LA CLASE TEXTFIELD
Equals
GetHashCode
GetType
MemberType
ReferenceEquals
ToString
Protegido Métodos
Finalize
MemberwiseClone