Programación en Java (AWT y
Swing)
AWT
Swing
Estructura de una aplicación
Ventana
Content Pane
Contenedor
Campo de Texto boton
boton
Diferencia AWT vs Swing
•AWT es una interface que utiliza código nativo del Sistema Operativo.
•AWT es mucho mas rápido que Swing •AWT es compatible con applets
•Swing es un GUI construido puramente en Java •Swing su funcionamiento es independiente del
Sistema operativo
•Swing permita manipular mas características a los componentes.
Trabajo con gráficos
•
El origen (0,0) de cada ventana está en la
esquina
superior
izquierda.
Las
•Líneas de dibujo.
• Las líneas se dibujan con el método drawLine(int x,int y,int x1,int y1) que realiza una linea con el color en uso. •
•Dibujar rectángulos.
• Los métodos drawRect( ) y fillRect dibujan un rectángulo sólo con el borde o relleno,
respectivamente.
•
Para dibujar un
rectángulo redondeado
, se usan
los métodos drawRoundRect(int x,int y, int anchox,int
largoy,int xdiam,int ydiam) o fillRoundRect(int x,int y,
int anchox,int largoy,int xdiam,int ydiam). El
diámetro del arco a lo largo del eje x y eje y están
dados por xdiam,ydiam.
•
Dibujar círculos y elipses.
•
Para dibujar una elipse se utiliza el método
•Dibujar círculos y elipses.
•Para dibujar una elipse se utiliza el método drawOval(int x,int y,int anchox, int largoy) y para una elipse rellena se utiliza el método fillOval(int x,int y,int anchox, int largoy) •
•Dibujar arcos.
•Los arcos se pueden dibujar con drawArc(int x,int y, int anchox,int altoy,int anguloinicial, int angulofinal) y
•Dibujar polígonos.
•También se pueden dibujar figuras con formas arbitrarias utilizando los métodos drawPolygon(int x[ ],int y[ ],int
numpuntos) y fillPolygon(int x[ ],int y[ ],int numpuntos). • Los vértices del polígono están especificados por las
parejas de coordenadas que vienen en los arreglos x y y. • Tamaño de los gráficos.
Trabajar con color.
•
El sistema de color del AWT permite especificar
cualquier color. La clase Color define varias
constantes por ejemplo Color.black esto para
especificar un conjunto de colores comunes.
También puede crear sus propios colores
utilizando uno de los constructores de colores. Las
formas que mas se usan son las siguientes:
•
Color(int red,int green,int blue)
•
Color(int rgbValue)
•
Para establecer el color para los
gráficos.
Botones
•
El control que más se utiliza son los botones.
Un botón es un componente que contiene una
etiqueta y que genera un evento cuando es
pulsado, los botones son objetos de la clase
Button y este proporciona dos constructores:
•
Button( )
•
Button(String Str)
Botones
•
Se puede asignar la etiqueta y obtener la
etiqueta utilizando los métodos:
•
void setLabel(String str)
•
String getLabel( )
•
•
Evento generado es un ActionEvent.
Layout
•
¿Cómo se distribuyen los componentes
Gestores de organización
FlowLayout
•
Este gestor acomoda los componentes de
izquierda a derecha y de arriba abajo por default.
•
FlowLayout( )
•
FlowLayout( int how)
•
How puede ser FlowLayout.LEFT,
FlowLayout.CENTER, FlowLayout.RIGHT
•
FlowLayout( int how, int horz, int vert) los últimos
especifican el espacio entre elementos
Gestores de organización
•
BorderLayout
es la segunda forma de organización
habitual por áreas, norte, sur, este, oeste, centro
•
BorderLayout( )
•
BorderLayout( int horiz,int vert) igual define espacios
•
Constantes que especifican las regiones:
•
BorderLayout.CENTER
•
BorderLayout.EAST
Gestores de organización
•
GridLayout
Organiza los componentes en una
cuadricula de 2 dimensiones
•
GridLayout( )
•
GridLayout(int numfilas, int numcolumnas )
Etiquetas.
• El control mas sencillo de utilizar es una etiqueta es un objeto de la clase Label, y contiene un string que se muestra en pantalla. Las etiquetas son controles pasivos que no admiten ninguna interacción con el usuario. Label define los siguientes constructores:
• Label( )
• Label(String str);
• Label(String str,int how);
•La tercera crea una etiqueta con el string de la forma indicada por how y estos pueden se de tres formas:
• Label.RIGTH, Label.LEFT, Label.CENTER
•Los métodos para manipular las etiquetas son:
•void setText( String arg) poner la nueva cadena a la etiqueta
•String getText( ) obtener el contenido de la etiqueta
• Los alineamientos se pueden especificar mediante dos métodos:
• void setAlignment(int how)
Eventos
Componentes o fuentes que generan
eventos
Origen de
evento Descripción
Button Genera eventos de acción (ActionEvent) cuando se presiona el botón.
Checkbox Genera eventos de elementos (ItemEvent) cuando se selecciona o deselecciona un checkbox.
Choice Genera eventos de elementos cuando se cambia de opción choice.
Menu Item Genera eventos de acción cuando se selecciona un elemento de menú; genera eventos de elemento cuando se selecciona o se deselecciona un elemento de un menú de opciones.
Scrollbar Genera eventos de ajuste (AdjustmentEvent) cuando se manipula el scrollbar.
Text
components Genera eventos de texto (TextEvent) cuando el usuario introduce un carácter.
Interfaces de auditor que más se utilizan
•
ActionListener
•
AdjustmentListener
•
ItemListener
•
KeyListener
•
MouseListener
•
MouseMotionListener
•
WindowListener
Primer programa con eventos
•
2 Botones y dice presióname y el otro
borrar
•
Cuando se presiona el primero actualiza
una etiqueta que dice que se presiono.
Con el botón de borrar se elimina el
•
Ejercicio de reforzamiento
Realizar un
programa que tenga tres botones
verticales, uno que dibuje un circulo
TextField
• La clase TextField implementa un área de entrada de texto de una sola línea que se llama control de edición. Los campos de texto permiten al usuario introducir strings y editar texto utilizando los cursores, las teclas de cortar y pegar y las selecciones que se hacen con el ratón. La clase TextField es una subclase de TextComponent y TextField proporciona los siguientes constructores:
•TextField( )
•TextField(int numchars )
•TextField(String Str)
•
int numchars especifica la anchura en caracteres
•
String str inicializa el campo por el texto especificado
•
Para obtener el texto del campo especificado se usa
String getText( )
•
Para establecer el texto al campo se usa void
setText(String texto)
•
Se puede seleccionar parte del texto utilizando los
siguientes métodos:
•
String getSelectedText( )
• Se puede poner editables y verificar si es editable o no con:
• void setEditable(boolean valor) • boolean isEditable( )
•
Ejercicio 2.
•
Ver funcionamiento e implementar un ejercicio
de captura de valores de un vector valores
deben de ser como maximo 100.
•
Los colores de las barras del histograma
generarlas de manera aleatoria.
TextArea
•
Algunas veces no basta con una entrada de una sola
línea para realizar ciertas tareas y para manejar esto
AWT incluye un sencillo editor multilíneas llamado
TextArea y los constructores son los siguientes:
•
TextArea( )
•
TextArea(int numlineas,int numcaracteres )
•
TextArea(String Str)
•
TextArea(String str,int numlineas,int numcaracteres)
•
TextArea(String str,int numlineas,int
•Textarea es una subclase de TextComponent por lo que
soporta los mismo metodos que TextField (String getText( ), void setText(String texto), String getSelectedText( ),
•void select(int inicio,int final), void setEditable(boolean valor), boolean isEditable( )) y además agrega los siguientes métodos:
•void append(String str)
•void insert(String str,int index)
•void replaceRange(String str,int startIndex,int endindex)
Archivos de Texto
• Las computadoras utilizan archivos para la retención a largo plazo de grandes cantidades de datos, incluso hasta después de que terminan que crean esos datos. Nos referimos a los datos que se mantienen en archivos como datos persistentes, ya que existen más allá de la duración de la ejecución del programa.
• Los ficheros(archivos) y streams se utilizan en java haciendo uso del paquete java.io
• La clase InputStream y OutputStream son las superclases de FileInputStream y FileOutputStream, que nos permitirán trabajar con archivos secuenciales de datos.
Métodos de InputStream
Método Descripción
int aviable( ); Devuelve el numero de bytes de entrada disponibles para lectura
void close( ); Cierra la fuente de entrada.
int read( ); Devuelve la representación como numero entero del byte.
int read(byte buffer[ ] ); Intenta leer hasta buffer.length bytes de buffer devolviendo el numero de bytes leídos y –1 cuando se ha llegado al final del archivo.
long skip(long numbytes); Salta el numbytes de la entrada y devuelve el número de bytes ignorados.
void reset( ); Inicializa el puntero de entrada. int read(byte buffer[ ], int
Métodos de OutputStream
Método Descripción
void close( ); Cierra el flujo de salida
void flush( ); Finaliza el estado de salida para los buffers.
void write(int b) Escribe un byte en un flujo de salida
void write(byte buffer[ ]) Escribe un matriz de bytes en el flujo de salida.
void write(byte buffer[ ],int
FileDialog
•
Se puede utilizar un cuadro de dialogo para que
el usuario pueda seleccionar un archivo. Para
crear un cuadro de dialogo de archivo solo hay
que crear un objeto de la clase
FileDialog
y
tiene los siguientes constructores:
•
FileDialog(Frame parent, String boxename);
•
FileDialog(Frame parent, String boxename,int
how);
• Donde parent es el propietario del cuadro de dialogo de archivo, boxename es el nombre que aparece en el titulo del cuadro de dialogo y how puede ser FileDialog.LOAD(El archivo se selecciona para lectura), FileDialog.SAVE(El archivo se selecciona para escritura).
• FileDialog tiene dos métodos que permite determinar el nombre y la ruta del archivo y son:
• String getDirectory( ) • String getFile( )
Ejercicio 8
Checkbox
•
Los checkbox son objetos de la clase Checkbox. Un
checkbox es un objeto que se utiliza para activar o
desactivar una opción. Está formado por un
pequeño cuadro que puede contener o no una marca
de comprobación. Hay una etiqueta asociada a cada
checkbox que describe que opción representa. Para
cambiar el estado de un checkbox sólo hay que
pulsar sobre el. Los checkbox se pueden utilizar
individualmente o como parte de un grupo.
Constructores
•
Checkbox( )
•
Checkbox(String str)
•
Checkbox(String str, boolean on)
•
Checkbox(String str, boolean
on,CheckboxGroup cbgroup)
Los métodos utilizados para el manejo de
los checkbox son:
•
boolean getState( )
devuelve el
estado del checkbox (seleccionado o no)
•
void setState(boolean on)
establece el
estado del checkbox (seleccionado o no)
•
String getLabel( )
devuelve la
etiqueta asignada al checkbox
•
void setLabel(String str)
establece la
etiqueta al checkbox
Ejercicio 3
•
Realizar un programa que muestre la
múltiple selección a través de checkbox;
generar un checkbox para cada uno de
los sistemas operativos que se utilizan
con mayor frecuencia y cuestionar cuales
son los sistemas operativos que a
CheckboxGroup
métodos
•
Los métodos definidos para manejar los
ChecboxGroup son:
•
Checkbox getSelectedCheckbox( ) devuelve el
checkbox actualmente seleccionado
•
void setSelectedCheckbox(Checkbox cual) para
establecer el checkbox seleccionado
•
Ejercicio 4
•
Realizar ejercicio que muestre selección única a
través de botones de radio, para el ejemplo
anterior (Ejercicio 3) selección de sistema
operativo.
Controles Choice
Métodos
•
Para añadir un elemento a la lista, hay que llamar
addItem o add que contienen los siguientes
formatos:
•
void addItem (String name);
•
void add(String name);
•
•
Para determinar el elemento seleccionado se
puede llamar a los siguientes métodos:
•
String getSelectedItem( )
Métodos
•int getSelectedCount( ) devuelve el número de elementos en la lista
•void select(String name) para indicar el elemento que debe estar seleccionado.
•void select(int index)
•String getItem(int index) para obtener el nombre de un elemento de una posición.
•Evento generado es ItemEvent. (Interfaz ItemListener y método itemStateChanged)
Ejercicio 5
Listas
• La clase List proporciona una lista de selección compacta, con desplazamiento, que permite realizar selecciones múltiples. A diferencia de Choice, que solo muestra el único elemento que se puede seleccionar en el menú, se puede construir un objeto List que muestre cualquier número de opciones en una ventana. También se puede configurar de manera que se puedan realizar selecciones múltiples. List tiene estos constructores:
• List( )
• List(int numRows)
Métodos
•
Para añadir elementos a la lista, hay que llamar al
método add( ), que tiene estos dos formatos:
•
void add(String name) Añade los
elementos al final de la lista
•
void add(String name,int index) Añade los
elementos en la posición especificada
•
Métodos
•Para determinar el elemento seleccionado se puede llamar a los siguientes métodos solo cuando se puede seleccionar un único elemento:
• String getSelectedItem( )
•int getSelectedIndex( )
•
•Para determinar el elemento seleccionado se puede
llamar a los siguientes métodos solo cuando se pueden seleccionar varios elementos:
• String [ ] getSelectedItems( )
Métodos
•int getSelectedCount( ) devuelve el número de elementos en la lista
•void select(String name) para indicar el elemento que debe estar seleccionado.
•void select(int index)
•String getItem(int index) para obtener el nombre de un elemento de una posición.
• Evento generado es un ActionEvent. solo cuando se le hace clic en un elemento de la lista.
• Evento generado es ItemEvent. (Interfaz ItemListener y método itemStateChanged) cuando se selecciona o
Ejercicio 6
•
Sistema operativo – Navegador con una
Barras de desplazamiento.
• Las barras de desplazamiento se utilizan para seleccionar valores continuos entre mínimo y un máximo especificado. Las barras de desplazamiento pueden ser horizontales y verticales. Una barra de desplazamiento tiene varios elementos. La clase Scrollbar encapsula las barras de desplazamiento y define los siguientes constructores:
• Scrollbar( )
• Scrollbar(int style)
•
Para establecer los valores en caso de haber
utilizado el primer constructor se usa:
•
void setValues(int initialvalue,int tamaño, int min,int
max);
•
Para obtener y poner el valor a la barra se usa:
•
int getValue( )
•
void setValue(int valor)
•
para obtener los valores mínimos y máximo:
•
int getMinimum( )
•
Por defecto el incremento de la flecha es de 1
pero se puede cambiar mediante void
setUnitIncrement(int nuevo incremento); por
defecto el incremento de pagina es de 10 y se
pueden
cambiar
llamando
a
void
setBlockIncrement(int nuevo incremento).
•
Evento generado es AdjustmentEvent. (Interfaz
AdjustmentListener
y
método
Ejercicio 7
•
Movimientos de figura
•
Colores rgb
Desplegado de imágenes
• Para desplegar una imagen dentro de un Applet primero se debe definir una referencia a partir de la clase Imagen como se muestra a continuacón:
•Image img;
•Paso número dos se debe de asignar la imagen haciendo uso del método:
•src/
•Image getImage(URL url,String imagíname);
•Pero en su defecto getImage(getDocumentBase( ),
•
Para desplegar la imagen en pantalla se utiliza
el método:
•
boolean drawImage
(Image imagen,int left,int
top,objeto de referencia);//tamaño original de la
imagen
•
boolean drawImage
(Image imagen,int left,int
top,int ancho,int largo,objeto de
Ejercicio 9
•
Cargar imagen
Reproducción de sonido
•Para reproducir audio se puede realizar utilizando la
clase AudioClip de la clase Applet de la siguiente forma: •AudioClip sonido; primero definiendo la referencia de
la clase.
• Posterior a eso obtener el archivo de audio mediante el método getAudioClip de la siguiente forma:
•sonido=getAudioClip(getDocumentBase(),"sonido1.wav" ); //archivo en el mismo directorio