Beruflich Dokumente
Kultur Dokumente
1
AWT Y Swing AWT Y Swing
Todavía no hay herramientas de •Los Contenedores contienen
composición visual, corriendo por cuenta Componentes, que son los controles
del programador el encaje de todas las básicos
piezas, así como la seguridad de
tratamiento de los eventos adecuados. •No se usan posiciones fijas de los
Componentes, sino que están situados a
Con Swing se va un paso más allá, ya través de una disposición controlada
que todos los JComponentes son (layouts)
subclases de Container, lo que hace
posible que componentes de Swing •Es bastante dependiente de la máquina
puedan contener otros componentes, en que se ejecuta la aplicación (no
puede asumir que un diálogo tendrá el
mismo tamaño en cada máquina)
Componentes Contenedores
•Un interfaz gráfico está construida en •Los Componentes se agrupan dentro de
base a elementos gráficos básicos, los Contenedores.
Componentes. Típicos ejemplos de estos
Componentes son los botones, barras de •Los Contenedores contienen y
desplazamiento, etiquetas, listas, cajas organizan la situación de los
de selección o campos de texto. Componentes; además, los
Contenedores son en sí mismos
•Los Componentes permiten al usuario Componentes y como tales pueden ser
interactuar con la aplicación y situados dentro de otros Contenedores.
proporcionar información desde el
programa al usuario sobre el estado del •También contienen el código necesario
programa. En el AWT, todos los para el control de eventos.
Componentes son instancias de la clase •En el AWT, todos los Contenedores son
Component. instancias de la clase Container
Tema 13. AWT y Swing 9 Tema 13. AWT y Swing 10
javax.swing
Box JComponent
Panel Window
getContentPane()
yourApplet yourFrame yourDialog yourWindow
2
Componentes Componentes
Hay Componentes con entrada de tipo no- Hay Componentes con entrada de tipo
textual como: textual como:
•los botones de pulsación: Button •campos de texto: TextField
•las listas: List •las áreas de texto TextArea
•botones de marcación: Checkbox •las etiquetas:Label
•botones de selección: Choice Y otros Componentes como:
•botones de comprobación: las barras de desplazamiento: Scrollbar
CheckboxGroup
zonas de dibujo: Canvas
Mostrando el
Componentes Contenedor en el Frame
Incluso los Contenedores Ejemplo en un contenedor Frame:
Panel public class Proy_Frame extends Frame {
Button apilaBoton =new Button("Apila");
Window
Dialog En su contructor:
Frame apilaBoton.setBounds(10,100,100,40);
también pueden considerarse como add(apilaBoton);
Componentes.
Mostrando el
Contenedor en el Frame Campos de Texto
El contenedor mostrará el boton: Para la entrada directa de datos se suelen
public static void main(String[] args) { utilizar los campos de texto, que aparecen en
pantalla como pequeñas cajas que permiten
Proy_Frame frame = new Proyecto_FrameFrame(); al usuario la entrada por teclado de una línea
de caracteres.
frame.setVisible(true);
La clase TextField extiende a la clase
} TextComponent, que extiende a su vez, a la
clase Component.
3
Areas de Texto Areas de Texto
Un área de texto (TextArea) es una zona multilínea TextArea miAreaTexto = new TextArea(
que permite la presentación de texto, que puede ser "",5,20,TextArea.SCROLLBARS_VERTICAL_O
editable o de sólo lectura. NLY );
Al igual que la clase TextField, esta clase extiende la for( int i=0; i < 10; i++ )
clase TextComponent miAreaTexto.append( "linea "+i+"\n" );
4
Choice Choice
Los botones de selección (Choice)
permiten el rápido acceso a una lista de
elementos, presentándose como título el class MiActionListener implements ActionListener {
item que se encuentre seleccionado. // Se sobrescribe el método actionPerformed() del
interfaz ActionListener
La clase Choice extiende la clase
Component e implementa el interfaz void actionPerformed( ActionEvent evt ) { ...
ItemSelectable, que es el interfaz que
mantiene un conjunto de items en los }
que puede haber, o no, alguno
seleccionado.
Además, esta clase proporciona el
método addItemListener(),
Tema 13. AWT y Swing 25 Tema 13. AWT y Swing 26
Canvas Canvas
Una zona de dibujo, o lienzo (Canvas), es hay que prestar atención en implementar los
una zona rectangular vacía de la pantalla métodos minimumSize() y preferredSize()
sobre la cual una aplicación puede pintar, o para reflejar adecuadamente el tamaño de
desde la cual una aplicación puede recuperar canvas; porque dependiendo del layout que
eventos producidos por acciones del usuario. utilice el contenedor del canvas, el canvas
puede llegar a ser demasiado pequeño,
canvas es útil a la hora de presentar incluso invisible.
imágenes o gráficos en pantallaCuando se
implementa una subclase de la clase Canvas La clase Canvas es muy simple, consiste en
un solo constructor sin argumentos y dos
métodos, que son:
AddNotify()Crea el observador del canvas
paint( Graphics )Repinta el canvas
Tema 13. AWT y Swing 27 Tema 13. AWT y Swing 28
Barra de
Desplazamiento Menus
Las barras de desplazamiento (Scrollbar) MenuComponent, es
se utilizan para permitir realizar ajustes de
valores lineales en pantalla, porporcionan la superclase de todos
una forma de trabajar con rangos de los Componentes
valores o de áreas
relacionados con menús.
MenuItem, representa una opción en un
menú.
Menu, es un Componente de una barra de
menú.
MenuBar, encapsula el concepto de una
barra de menú en un Frame.
CheckboxMenuItem, genera una caja de
selección que representa una opción en un
Tema 13. AWT y Swing 29 menú. Tema 13. AWT y Swing 30
5
Menus JFrame
MenuComponent, es la superclase de
todos los Componentes relacionados con Toda aplicación Swing tiene, al menos, un
menús. contenedor raíz (una ventana)
MenuItem, representa una opción en un JFrame incluye una serie de elementos:
menú. • Los contenidos se
Menu, es un Componente de una barra de añaden en el panel de
contenidos (content
menú. pane) accesible a
MenuBar, encapsula el concepto de una través del método
barra de menú en un Frame. getContentPane (por
defecto, un objeto de
CheckboxMenuItem, genera una caja de tipo Jpane, aunque
selección que representa una opción en un puede cambiarse con
setContentPane).
menú. • La barra de menú
puede fijarse con
.... setJMenuBar
Tema 13. AWT y Swing 31 Tema 13. AWT y Swing 32
ContentPane JFrame
JFrame import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
Content
Pane JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
Añadir }
componentes public static void main(String[] args) {
6
Posicionamiento
Absoluto Layout
Los Componentes se pueden colocar en
Contenedores utilizando cualquiera de los Los layout ayudan a adaptar los
Layouts, más seguros ante cambios de diversos Componentes que se desean
resolución, o utilizando posicionamiento incorporar a un Panel, es decir,
absoluto. especifican la apariencia que tendrán
La clase Component proporciona métodos los Componentes a la hora de colocarlos
para especificar la posición y tamaño de un sobre un Contenedor, controlando
Componente en coordenadas absolutas tamaño y posición (layout)
indicadas en pixels: automáticamente.
setBounds( int,int,int,int );
setBounds( Rectangle );
miBoton.setBounds( new Rectangle( 25,20,100,75 ) );
Tema 13. AWT y Swing 37 Tema 13. AWT y Swing 38
Layout Layout
En el tratamiento de los Layouts se
utiliza un método de validación, de
forma que los Componentes son
marcados como no válidos cuando un
cambio de estado afecta a la geometría
o cuando el Contenedor tiene un hijo
incorporado o eliminado.
La validación se realiza
automáticamente cuando se llama a
pack() o show().
FlowLayout FlowLayout
Es el más simple y el que se utiliza por FlowLayout miFlowLayout = new FlowLayout(
FlowLayout.CENTER,3,3 );
defecto en todos los Paneles si no se miFrame.setLayout( miFlowLayout );
fuerza el uso de alguno de los otros.
Los Componentes añadidos a un Panel Button boton1 = new Button( "Primero" );
con FlowLayout se encadenan en ...
miFrame.add( boton1 );
forma de lista, de izquierda a derecha, ....
y se puede seleccionar el espaciado
entre cada Componente.
7
BorderLayout BorderLayout
//En el constructor de un Frame
La composición BorderLayout (de BorderLayout miLayout = new BorderLayout();
borde) proporciona un esquema más miLayout.setVgap( 30 );
complejo de colocación de los miLayout.setHgap( 30 );
Componentes en un panel.
La composición utiliza cinco zonas para this.setLayout( miLayout );
colocar los Componentes sobre ellas: this.setTitle( "Ejemplo de BorderLayout" );
Norte, Sur, Este, Oeste y Centro. this.setSize( 300,300 );
BorderLayout GridLayout
this.add( new Button( "Norte" ),"North" );
this.add( new Button( "Sur" ),"South" ); La composición GridLayout
this.add( new Button( "Este" ),"East" ); proporciona gran flexibilidad para situar
this.add( new Button( "Oeste" ),"West" ); Componentes.
// Ahora se podrán ver El controlador de posicionamiento se
this.setVisible( true ); crea con un determinado número de
filas y columnas y los Componentes van
dentro de las celdas de la tabla así
definida.
8
Bordes Bordes
La clase JComponent también contiene un En el constructor de un JPanel
método llamado setBorder(), que import com.sun.java.swing.border.*;
permite colocar diferentes bordes a un
setLayout( new GridLayout( 2,4 ) );
componente visible. add( creaBorde( new TitledBorder("Titulo") ) );
add( creaBorde( new EtchedBorder() ) );
add( creaBorde( new LineBorder(Color.blue) ) );
add( creaBorde( new
MatteBorder(5,5,30,30,Color.green) ) );
add( creaBorde( new BevelBorder(BevelBorder.RAISED)
) );
...
JButton JLabel
El JButton parece igual que el botón que En Swing, al derivar de JComponent, la
hay en el AWT, pero se pueden hacer clase JLabel implementa todas las
muchas más cosas con él. características inherentes a los
Todos los botones, además, tienen ahora componentes Swing, como pueden ser
la posibilidad de incorporar imágenes a los aceleradores de teclado, bordes, y
través del objeto Icon demás.
Icon imagen = new ImageIcon( "miDibujo.gif" );
JLabel etiq3 = new JLabel( "Etiqueta3",
imagen,SwingConstants.CENTER );
JList Dialogos
Swing también proporciona nuevos
Las lista y cajas "combo" en Swing modelos de diálogos predefinidos del
funcionan del mismo modo que lo hacían sistema, como son en diálogo de
en el AWT, aunque mejoran algunas selección de colores, el diálogo de
cosas. selección de ficheros, diálogos de aviso,
Por ejemplo, JList tiene un constructor error y confirmación, y algunos más.
al que se puede pasar un array de La apariencia es muy distinta a la que se
objetos String para que los presente. presentaba en el AWT en algunos casos,
por ejemplo en la selección de ficheros:El
objeto JFileChooser no abre ni salva
nada, sino que se limita a seleccionar el
nombre del fichero
Tema 13. AWT y Swing 53 Tema 13. AWT y Swing 54
9
Dialogos de Opción Combo box
int res = JOptionPane.showConfirmDialog(
this,"Responda Si o No",
"Dialogo de Opción",JOptionPane.YES_NO_OPTION );
Slider Spinner
FileChooser Eventos
Event
Source Listener
10
Eventos Interface Listener
java.util
Listener Interface Event Listener Methods
EventObject
java.awt.event
TextEvent WindowEvent
focusGained()
FocusListener FocusEvent
focusLost()
Frames cerrables
JFrame WindowListener
extends implements
MyCloseableJFrame MyWindowListener
11