Download UNIDAD I.- Elementos de Interfaces Gráficas

Document related concepts
no text concepts found
Transcript
Tópicos Selectos de Programación
UNIDAD I.- Elementos de Interfaces Gráficas
___________________________________________________________________
LECCIÓN 1.2.- Librerías de Interfaz Gráfica
___________________________________________________________________
1.2.1.- Librerías gráficas de Java
En java existen varios paquetes para manejo de la interfaz gráfica:
–
AWT (Abstract Window Toolkit): Paquete básico para el diseño de interfaces gráficas de
Java.
–
Swing: A partir de la versión 1.2, para crear interfaces gráficas profesionales con
independencia de plataforma.
–
Java2D: Para manejar objetos gráficos (lineas, elipses, curvas) como objetos y aplicar
transformaciones sobre estos (rotación, escalado).
–
Java3D: Para manipular vistas tridimensionales de objetos gráficos.
Elementos gráficos
Toda interfaz gráfica tiene:
–
Componentes: Objetos que representan un elemento gráfico (botón, cuadro de texto)
–
Contenedores: Objetos que contienen componentes (Ventanas, Cuadros de Dialogo)
–
Administradores de diseño: Objetos que controlan la forma en que se ordenan y
acomodan los componentes dentro de un contenedor.
–
Contexto gráfico: Área de un componente gráfico donde se puden dibujar primitivas
gráficas (lineas, curvas) y colocar imágenes.
Rafael Rivera López
1
Tópicos Selectos de Programación
1.2.2.- Componentes gráficos
Un componente es un objeto que tiene una representación gráfica que puede ser presentada
en una pantalla y puede interactuar con el usuario. La clase abstracta Component contiene
los métodos comúnes para todos los componentes gráficos.
Tabla 2.1.- Métodos más utilizados en un componente gráfico
Método
Descripción
setSize(int largo,int ancho)
Define el tamaño del componete
setLocation(int x, int y)
Define la ubicación del componente
setBounds(int x, int y, int largo, int ancho) Define la ubicación y tamaño del componente
setBackground(Color color)
Define el color de fondo del componente
Rafael Rivera López
2
Tópicos Selectos de Programación
Tabla 2.1.- Métodos más utilizados en un componente gráfico
Método
Descripción
paint(Graphics g)
Permite dibujar primitivas gráficas dentro del componente
1.2.3.- Contenedores gráficos
Un contenedor es un componente gráfico que tiene la capacidad de almacenar otros
componentes gráficos.
Tabla 2.2.- Métodos más utilizados en un contenedor gráfico.
Método
Descripción
add(Component x)
Adiciona un componente al contenedor
remove(Component x)
Remueve un compoenente del contenedor
setLayout(LayoutManager x) Define cual es el administrador de diseño de contenedor
Frame: Un frame es una ventana con un título, un ícono asociado, un tipo de cursor asociado
y una barra de menú (opcional).
Rafael Rivera López
3
Tópicos Selectos de Programación
Se pueden crear ventanas de dos formas:
–
Creando un objeto dentro de la clase aplicación
–
Creando una clase instanciable que herede de Frame.
–
Creando un objeto de la clase Frame
import java.awt.*;
public class Ventana{
public static void main(String[] args){
Frame f = new Frame("Primera Ventana");
f.setSize(300,300);
f.setLocation(200,100);
f.setBackground(Color.cyan);
f.setVisible(true);
}
}
Rafael Rivera López
4
Tópicos Selectos de Programación
Creando un clase instanciable que herede de Frame
package nuevaventana;
import java.awt.*;
//Clase Instanciable
public class MiVentana extends Frame{
public MiVentana(){
super("Mi Ventana");
setSize(300,300);
setLocation(200,100);
setBackground(Color.cyan);
addComponentes();
}
public MiVentana(Color color){
this();
setBackground(color);
}
}
public void addComponentes(){
Button b = new Button("Aceptar");
add(b);
}
package nuevaventana;
public class Main {
public static void main(String[] args) {
MiVentana v = new MiVentana();
v.setVisible(true);
MiVentana y = new MiVentana(java.awt.Color.BLUE);
y.setVisible(true);
// Se crea un objeto anónimo
new MiVentana(java.awt.Color.yellow).setVisible(true);
}
}
Rafael Rivera López
5
Tópicos Selectos de Programación
1.2.4.- Administradores de diseño
–
Un administrador de diseño (layout) es un objeto que se encarga de controlar la ubicación
y apariencia de los componentes dentro de un contenedor.
–
Se activa con el método setLayout(LayoutManager x)
–
Si no se indica, se tiene ya uno predefinido:
–
–
Para objetos que derivan de Window (Frame, Dialog) es BorderLayout()
–
Para objetos que derivan de Panel (Panel, Applet) es FlowLayout
Adicionando un componente al contenedor: Se utiliza un método definido por el usuario
denominado addComponentes()
–
Si no se indica el administrador de diseño, Frame usan BorderLayout y el componente se
coloca en toda la ventana, porque no se indico su ubicación
package layouts;
import java.awt.*;
public class MiVentana extends Frame{
public MiVentana(){
super("Ventana con un botón");
setSize(200,200);
setLocation(5,300);
setBackground(Color.WHITE);
addComponentes();
setVisible(true);
}
}
public void addComponentes(){
add(new Button("Botón"));
}
Rafael Rivera López
6
Tópicos Selectos de Programación
Tabla 2.3.- Administradores de diseño para contenedores en Java
Layout
Descripción
BorderLayout
Divide el contexto gráfico en cinco áreas. Se debe indicar en que área se adiciona
el componente. Se utiliza una constante o un String:
Norte: BorderLayout.NORTH ó “North”
Sur: BorderLayout.SOUTH ó “South”
Centro: BorderLayout.CENTER ó “Center”
Este: BorderLayout.EAST ó “East”
Oeste: BorderLayout.WEST ó “West”
FlowLayout
Coloca a los componentes al centro del contenedor, en la parte superior y ajusta
el tamaño del componente al mínimo.
GridLayout
Divide el contexto gráfico en una malla de n líneas y m columnas
CardLayout
Coloca a los componentes en una pila donde solo está visible un componente.
GridBagLayout
Divide al contexto gráfico en secciones cuyo tamaño es definido por el usuario.
Ventana con FlowLayout:
package layouts;
import java.awt.*;
public class MiVentana1 extends Frame{
public MiVentana1(){
super("Ventana con FlowLayout");
setSize(300,300);
setLocation(10,10);
setBackground(Color.cyan);
addComponentes();
setVisible(true);
}
public void addComponentes(){
setLayout(new FlowLayout());
add(new Button("Ok"));
add(new Button("Cancel"));
}
}
Rafael Rivera López
7
Tópicos Selectos de Programación
Ventana con dos o mas contenedores:
Un contenedor es un componentes, por lo que puede estar contenido en otro contenedro
import java.awt.*;
public class MiVentana2 extends Frame{
public MiVentana2(){
super("Ventana con dos contenedores");
setSize(300,300);
setLocation(340,100);
setBackground(Color.orange);
addComponentes();
setVisible(true);
}
public void addComponentes(){
// Un Frame tiene BorderLayout
add(new Label("Captura un Texto"),"North");
add(new TextArea(200,200),"Center");
// Un panel es un contenedor con FlowLayout
Panel p = new Panel();
add(p,"South");
p.add(new Button("Aceptar"));
p.add(new Button("Cancelar"));
}
}
Ventana con GridLayout:
package layouts;
import java.awt.*;
public class MiVentana3 extends Frame{
public MiVentana3(){
super("Primera Calculadora");
setSize(200,250);
setLocation(450,300);
setBackground(Color.WHITE);
addComponentes();
setVisible(true);
}
Rafael Rivera López
8
Tópicos Selectos de Programación
public void addComponentes(){
Panel p1 = new Panel();
Panel p2 = new Panel();
add(new TextField(),"North");
add(p1,"Center");
add(p2,"East");
add(new Button("="),"South");
// Se define una malla para el panel p1
p1.setLayout(new GridLayout(3,3));
for(int i=1;i<=9;i++)
p1.add(new Button(""+i));
// Se define otra malla para el panel p2
p2.setLayout(new GridLayout(2,1));
p2.add(new Button("+"));
p2.add(new Button("-"));
}
}
Ventana con CardLayout:
package layouts;
import java.awt.*;
public class MiVentana4 extends Frame{
public MiVentana4(){
super("Ventana con CardLayout");
setSize(200,250);
setLocation(450,300);
setBackground(Color.WHITE);
addComponentes();
setVisible(true);
}
public void addComponentes(){
CardLayout c = new CardLayout();
setLayout(c);
add(new Button("Boton inicial"),"1");
add(new TextArea(40,80),"2");
add(new Label("Etiqueta"),"3");
c.show(this,"1");
Rafael Rivera López
9
Tópicos Selectos de Programación
}
setVisible(true);
for(int i=0;i<8;i++){
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
System.err.println("error!"+e);
}
c.next(this);
}
}
Se necesita una referencia para el administrador de diseño:
CardLayout c = new CardLayout();
setLayout(c);
Se adiciona indicando una etiqueta:
add(new Button("Boton inicial"),"1");
add(new TextArea(40,80),"2");
add(new Label("Etiqueta"),"3");
Se indica con show cual es el primer componente a presentar
c.show(this,"1");
Se indica con next que se cambie el componente:
c.next(this);
Sin Layout:
Utilizando setLayout(null) se indica que no se va a utilizar un administrador de diseño
package layouts;
import java.awt.*;
public class MiVentana5 extends Frame{
public MiVentana5(){
super("Ventana sin Layout");
setSize(200,250);
setLocation(100,100);
Rafael Rivera López
10
Tópicos Selectos de Programación
setBackground(Color.YELLOW);
addComponentes();
setVisible(true);
}
}
public void addComponentes(){
setLayout(null);
Button b1 = new Button("Aceptar");
Button b2 = new Button("Cancelar");
b1.setBackground(Color.GREEN);
b1.setLocation(50,40);
b1.setSize(100,40);
b2.setBounds(100,200,40,40);
add(b1);
add(b2);
}
Rafael Rivera López
11