Professional Documents
Culture Documents
AWT y SWING
Awt y Swing forman parte de una coleccin de clases llamadas JFC(Java Foundation
Clases), incluyen paquetes dedicados a la programacin de interfaces grficas y
multimedia.
AWT
Awt (Abstract Windows Tools) fue la primera solucin propuesta por java y esta
formada por varias clases que no dependen del sistema operativo y propone una serie
de clases para la programacin GUIs (graphic users intefaces). Un GUIs comprende
contenedor y componentes.
import java.awt.*;
import java.awt.*;
//dos ventanas
public class Ejemplo2 {
public static void main( String args[] ) {
Frame f = new Frame( "Ejemplo ventanita 1" );
Frame k = new Frame("Ejemplo ventanita 2");
f.show(); //muestra la ventana
f.pack();//activa a ventana para cambiar el tamano
1
PROGRAMACION II
Ing. Irma Prado
Ejemplo 3. Crear dos ventanas. Esta vez la segunda ventana cerrar la aplicacin,
por lo que debemos programar este evento.
import java.awt.*;
import java.awt.event.*;
//dos ventanas
public class Ejemplo3 {
public static void main( String args[] ) {
Frame f = new Frame( "Ejemplo ventanita 1" );
Frame k = new Frame("Ejemplo ventanita 2");
f.show(); //muestra la ventana
f.pack();//activa a ventana para cambiar el tamano
f.resize(400,200); //nuevas dimensiones de la ventana
k.pack();
k.resize(300,300);
k.show();
//--------------------------------------------
//cerrar ventana k y salir del programa
k.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
System.exit( 0 );}} );
//---------------------------------------------
}}
2
PROGRAMACION II
Ing. Irma Prado
import java.lang.*;
import java.awt.*;
import java.awt.Image; //para la imagen
import java.awt.event.*;
{
// area de definicion de propiedades de el objeto
Image icono = Toolkit.getDefaultToolkit().getImage("logop.jpg");
//cargamos la imagen
ventana.setIconImage(icono);
//ubcamos la imagen en la ventana(el logo de la U)
3
PROGRAMACION II
Ing. Irma Prado
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Image fotografia;
fotografia=Toolkit.getDefaultToolkit().getImage("logop.jpg");
this.addWindowListener(
new WindowAdapter(){
System.exit(0);
//todo eso para cerrar el applet haciendo clic en X de la ventana y que no se cuelque el
programa
4
PROGRAMACION II
Ing. Irma Prado
g.translate(this.getInsets().left,this.getInsets().top);
Ejemplo 6. En base al ejemplo anterior, pero ahora paint() dibuja figuras geomtricas
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
this.setTitle( "Graficos" );
5
PROGRAMACION II
Ing. Irma Prado
this.addWindowListener(
new WindowAdapter(){
System.exit(0);
//todo eso para cerrar el applet haciendo clic en X de la ventana y que no se cuelque el
programa
g.fillRect(100,65,100,50);
g.setColor(java.awt.Color.blue);//cambiamos el color
g.setColor(java.awt.Color.yellow);
g.fillOval(200,80,70,90);
g.setColor(java.awt.Color.black);
g.drawLine(25,200,250,300);
6
PROGRAMACION II
Ing. Irma Prado
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// Image fotografia;
this.addWindowListener(
new WindowAdapter(){
7
PROGRAMACION II
Ing. Irma Prado
System.exit(0);
g.setFont(letrita);
letrita=new Font("Courier",Font.ITALIC,14);
g.setFont(letrita);
letrita=new Font("Helvetica",Font.PLAIN,14);
g.setFont(letrita);
g.setColor(java.awt.Color.red);
8
PROGRAMACION II
Ing. Irma Prado
//cambiamos el color
g.setColor(java.awt.Color.green);
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*; //para el Buffered
9
PROGRAMACION II
Ing. Irma Prado
10
PROGRAMACION II
Ing. Irma Prado
import java.awt.*;
import java.awt.event.*;
// primer boton
11
PROGRAMACION II
Ing. Irma Prado
boton1.setLabel("Saludo");
boton1.setBackground(java.awt.Color.blue);
boton1.setBounds(42,78,124,33);
//columna,fila,alto y ancho
this.add(boton1); //ubicamos el boton1 en la ventana
//segundo boton
boton2.setLabel("Despedida");
boton2.setBackground(java.awt.Color.red);
boton2.setBounds(200,78,124,33);
this.add(boton2); //ubicamos el boton2 en la ventana
//salida
texto.setText(" ");
texto.setAlignment(java.awt.Label.LEFT);
// ubicamos al izq
texto.setFont(new Font("BOLD", 40, 30));
//negrita, tipo de letra,tamano
texto.setBounds(42,344,100,136);
this.add(texto); //ubicamos el texto en la ventana
this.show();//mostramos la ventana
this.addWindowListener(
}
public static void main(String []arg)
{
new botones_v();
}
public boolean action(Event e,Object o)
//active los eventos de los botones
{
if (e.target==boton1){
//en e.target se encuentra el boton que hiceron clic,
metodoBoton1();
repaint();} //se ejecuta otra vez paint,
if (e.target==boton2){
//en e.target se encuentra el boton que hiceron clic en el boton2
metodoBoton2();
repaint();} //se ejecuta otra vez paint
return false;
//si no hicieron clic en el boton no hara nada
}//fin de action
12
PROGRAMACION II
Ing. Irma Prado
void metodoBoton1()//function boton1
{
texto.setText(" HOLA ");
}
void metodoBoton2()//function boton2
{
texto.setText(" ADIOS ");
}
}
import java.awt.*;
import java.awt.Component;
import java.awt.event.*;
13
PROGRAMACION II
Ing. Irma Prado
this.setSize( 515,269); //tamanio de la ventana
}
public static void main(String []arg)
{
new bbb();
}
public boolean action(Event e,Object o)
{
if (e.target==boton){ //en e.target se encuentra el boton
que hiceron clic
a= Integer.parseInt( texto.getText() ); //convertimos a
numero el dato ingresado
b= Integer.parseInt( texto1.getText() ); //convertimos a
numero el dato ingresado
repaint();} //se ejecuta otra vez Saint, pero ahora con el
dato ingresado
return false; //si no hicieron clic en el boton no hara
nada
}
public void paint(Graphics g)
{ int x=30; int r;
14
PROGRAMACION II
Ing. Irma Prado
int y=200;
String resultado;
suma=a+b;
g.setColor(Color.blue); //texto azul
g.drawString("La suma es "+a+"+"+b+"="+suma,x,y);
}
}
import java.awt.*;
import java.awt.Component;
import java.awt.event.*;
15
PROGRAMACION II
Ing. Irma Prado
etiqueta1.setFont(new Font("Dialog",
Font.PLAIN, 20));
etiqueta1.setBounds(50,28,256,38);//columna,fila,alto y ancho
this.add(etiqueta1);
//ahora el boton
boton.setLabel("ejecutar");
this.add(boton);
}
public static void main(String []arg)
{
new aaa();
}
public boolean action(Event e,Object o)
{
if (e.target==boton){ //en e.target se encuentra el
boton que hiceron clic
num = Integer.parseInt( texto.getText() );
//convertimos a numero el dato //ingresado
repaint();} //se ejecuta otra vez paint, pero ahora
con el dato ingresado
return false; //si no hicieron clic en el boton no
hara nada
}
16
PROGRAMACION II
Ing. Irma Prado
17
PROGRAMACION II
Ing. Irma Prado
Swing
Es un conjunto de clases desarrolladas para mejorar al paquete AWT, es una
extensin de AWT y se implementa a partir de Java 1.2, llamado Java2, este paquete
soporta mucho ms clases y construye mejor las apariencias del programa. AWT no
desaparece, simplemente Swing le aade nuevas capacidades y Swing utiliza clases
de Awt, como por ejemplo las relacionadas con eventos. Para mayor informacin
visite http://docs.oracle.com/javase/1.5.0/docs/api/
import javax.swing.*;
18
PROGRAMACION II
Ing. Irma Prado
Ejemplo 1.- Creamos una ventana, creando una subclase de la clase JFrame, para
poder utilizar todos sus atributos y aplicaciones.
import javax.swing.*;
class Ventana1 extends JFrame // heredamos
{
Ventana1() //creamos un constructor
{ super("Aqui el titulo de la ventana"); //asignamos el titulo de la ventana
}
public static void main(String []args)
{ Ventana1 a=new Ventana1();
//a es objeto de la clase ventana. Hemos creamos el objeto
a.setLocation(150,250); //coordenadas donde debe salir la ventana emergente
a.pack(); //ajusta la ventana
a.show();//muestra la ventana
}
}
Genera la siguiente ventana
Ejemplo 2.- En este ejemplo agregamos un botn (es un objeto de la clase JButton),
que de momento no hace nada y cambiamos el tamao de la ventana.
import javax.swing.*;
class Ventana2 extends JFrame
{
JButton boton1= new JButton("boton 1");
//declaracin del objeto boton1 que lleva el texto "boton 1"
JPanel panel=new JPanel();//creamos un objeto panel
Ventana2()
{ super("ejemplo de ventana 2");
panel.add(boton1); //adicionamos el boton al panel
setContentPane(panel); //convertimos al panel de contenidos
}
public static void main(String []args)
{
JFrame x=new Ventana2();
x.pack();
x.setSize(100,150); //cambia el tamanio de la ventana
x.show();
}
}
19
PROGRAMACION II
Ing. Irma Prado
import javax.swing.*;
class Ventana3 extends JFrame
{
Ventana3() //creamos un constructor
{ super("Aqui el titulo de la ventana"); //asignamos el titulo de la ventana
}
public static void main(String []args)
{ Ventana3 a=new Ventana3();
//a es objeto de la clase ventana. Creamos el objeto
a.setLocation(150,250); //coordenadas donde debe salir la ventana emergente
a.setSize(300,100); //indicamos el tamao de la ventana
a.setVisible(true); //otra forma de mostrar la ventana
}
}
import javax.swing.*;
class Ventana4 extends JFrame
{ //z es un objeto de la case ImageIcon
ImageIcon z=new ImageIcon("logop.gif");
//cargamos la imagen en la variable z
JButton boton1= new JButton(z); //ahora el botn lleva la imagen
JPanel panel=new JPanel();//creamos un objeto panel
20
PROGRAMACION II
Ing. Irma Prado
Ventana4()
{ super("ejemplo de ventana con boton de imagen");
panel.add(boton1); //adicionamos el boton al panel
setContentPane(panel); //convertimos al panel de cotenidos
}
import javax.swing.*;
class Ventana5 extends JFrame
{ //z es un objeto de la case ImageIcon
ImageIcon z=new ImageIcon("logop.gif");
String s="Salir";
//cargamos la imagen en la variable z
JButton boton1= new JButton(s,z);
//declaracin del objeto boton1 con el texto salir
JPanel panel=new JPanel();//creamos un objeto panel
Ventana5()
{ super("ejemplo de ventana con boton de imagen");
panel.add(boton1); //adicionamos el boton al panel
setContentPane(panel); //convertimos al panel de cotenidos
}
public static void main(String []args)
{
JFrame x=new Ventana5();
x.pack();
x.show();
}
}
21
PROGRAMACION II
Ing. Irma Prado
Ventanas:
Ejemplo
import javax.swing.JFrame;
public class ventanita0 {
public static void main(String[] ar) {
JFrame f=new JFrame();
f.setBounds(10,10,300,200);
f.setVisible(true);
}
}
Ejemplo.
22
PROGRAMACION II
Ing. Irma Prado
import javax.swing.*;
public class VentanaHola extends JFrame {
public VentanaHola() { //constructor
super("Hola Amigos");
setLocation(50,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(250, 200);
setVisible(true);
}
public static void main(String[] args) {
new VentanaHola(); //sin objeto
}
}
Algunos mtodos:
23
PROGRAMACION II
Ing. Irma Prado
24
PROGRAMACION II
Ing. Irma Prado
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.*;
class DibujaEnVentana extends JFrame{
public static void main(String[] args) {
new DibujaEnVentana("Dibujos");
}
public DibujaEnVentana(String ttulo) {
super(ttulo);
setContentPane(new PanelDibujos());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setVisible(true);
}
public class PanelDibujos extends JPanel {
25
PROGRAMACION II
Ing. Irma Prado
setBackground(Color.white);
26
PROGRAMACION II
Ing. Irma Prado
En el siguiente ejemplo
identifique
componentes y
contenedores:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class MuevePelota extends JFrame {
//------------------------------------------------
public static void main(String[] args) {
JFrame f = new MuevePelota();
// Llama a repaint cada 50ms
while (true) {
try {
Thread.sleep(50); // Espera 50ms
} catch (InterruptedException e) { }
f.repaint();
}
}
//------------------------------
public MuevePelota() {
super("Pelota");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //para cerrar la ventana
setContentPane(new PanelPelota());
setSize(450, 500);
setVisible(true);
}
//--------------seg clase-------------------
public class PanelPelota extends JPanel {
// coordenadas del centro de la pelota
private int xCentro = 0;
private int yCentro = 0;
// componentes de la velocidad
private int vx = 5; // (en pixels/periodo main)
private int vy = 5; // (en pixels/periodo main)
// radio de la pelota
private final int radio = 50;
//--------------------------------------
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// calcula nueva posicin del centro
xCentro=xCentro + vx; yCentro=yCentro + vy;
27
PROGRAMACION II
Ing. Irma Prado
Por ejemplo, para aadir un botn a un JPanel, debemos aadir estas lneas en su
constructor:
28
PROGRAMACION II
Ing. Irma Prado
Para aadir componentes a una ventana (JFrame) hay que aadirles a su content
pane. En el constructor de un JFrame podran aparecer las siguientes
lneas de cdigo:
Button b = new Button("botoncito");
getContentPane().add(b);
Por comodidad los mtodos add, remove y setLayout de un JFrame estn redefinidos
para que operen sobre su content pane, entonces escribir en el constructor de un
JFrame:
add(b);
es lo mismo que escribir:
getContentPane().add(b);
Gestores de distribucin
29
PROGRAMACION II
Ing. Irma Prado
BorderLayout()
30
PROGRAMACION II
Ing. Irma Prado
Sabemos que SWING es un conjunto de clases presente a partir del Java2, para
mejorar el paquete AWT, Abstract Window Tools) que an se usa bastante en las
aplicaciones Java. Tanto Swing como AWT forman parte de una coleccin de
clases llamada JFC (Java Foundation Classes) que incluyen paquetes dedicados a
la programacin de interfaces grficos (as como a la produccin multimedia).
El modelo- vista controlador es fundamental en el trabajo con interfaces de
usuario por parte de Swing. Consiste en tres formas de abstraccin. Es decir, el
mismo objeto se ve de esas tres
Maneras:
Modelo. Se refiere al modelo de datos que utiliza el objeto. Es la
informacin que se manipula mediante el objeto Swing.
Vista. Es cmo se muestra el objeto en la pantalla.
Controlador. Es lo que define el comportamiento del objeto.
31
PROGRAMACION II
Ing. Irma Prado
32
PROGRAMACION II
Ing. Irma Prado
33
PROGRAMACION II
Ing. Irma Prado
Para poner un color de fondo en el panel, primero debe estar el panel activo, es
decir debe estar marcado, con los cuadritos en los bordes. Utilizamos sus
propiedades y seleccionamos la propiedad background, luego elegimos el color
de la paleta de colores y clic en aceptar.
Como ttulo vamos agregar una etiqueta, agregamos el controlador Jlabel, tal como
se ve en la imagen.
34
PROGRAMACION II
Ing. Irma Prado
Entre las propiedades puede cambiar el tipo y tamao de letra. Haciendo doble clic
sobre la etiqueta cambia el texto
Aada dos etiquetas ms y cambie el texto como en la siguiente figura:
35
PROGRAMACION II
Ing. Irma Prado
36
PROGRAMACION II
Ing. Irma Prado
37
PROGRAMACION II
Ing. Irma Prado
38
PROGRAMACION II
Ing. Irma Prado
Cuando se haga clic en el botn se leern los campos de texto, en este cdigo El
campo de texto X se convierte a entero y se almacena en la variable a. El valor
ingresado en el campo de texto 2 , ahora llamado Y se convierte a entero y se
almacena en b. Note que la suma de a+b se almacena en la etiqueta cuyo nombre
de variable era resultado,
Regrese a la pantalla de diseo y ejecute el programa
39
PROGRAMACION II
Ing. Irma Prado
40
PROGRAMACION II
Ing. Irma Prado
Ahora, para el resultado, que son varias lneas ya que vamos a desplegar la
tabla, vamos agregar el componente rea de texto, debe arrastrarlo y
dejarlo del tamao que se ve en la figura:
Inmediatamente se traslada a la pantalla de cdigo, agregue las siguientes
lneas de texto ( lo que est con amarillo y celeste):
private void tablaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//en k almacenamos el numero seleccionado de la lista deplegable
int k=Integer.parseInt(String.valueOf(tabla.getSelectedItem()));
String p1=calcular_tablita(k);
//llamamos a la funcin tablita donde se calcula la tabla y se almacena en
una string. Swing en Netbeans Programacion II Ing. Irma Prado
41
PROGRAMACION II
Ing. Irma Prado
Ahora cada botn de opcin debe pertenecer al grupo1, esto para que
permita seleccionar uno solo y no todas las opciones. Proceda como en la
figura. Proceda con cada botn opcin del mismo modo.
42
PROGRAMACION II
Ing. Irma Prado
Nos falta darle nombre a los botones de opcin, entonces clic en el botn,
clic en cdigo y cambie el nombre por el de radiob1 para la suma y radiob2
para la opcin de la resta.
43
PROGRAMACION II
Ing. Irma Prado
int b=Integer.parseInt(jTextField1.getText());
res.setText(String.valueOf(a+b)); }
Proceda del mismo modo para el botn de opcin de la resta y al hacer clic
en eventos actionPerformed, ingrese el sgte cdigo para la resta.
44
PROGRAMACION II
Ing. Irma Prado
int a=Integer.parseInt(jTextField2.getText());
int b=Integer.parseInt(jTextField1.getText());
res.setText(String.valueOf(a-b));
}
LABORATORIO Y TRABAJO PRACTICO
1. Realice en Netbeans los programas explicados en esta gua, luego en un
archivo zip registrar estos en el aula virtual como asistencia del laboratorio.
2. Programa para:
Dado un nmero entero N que ingresa por teclado, realizar un
programa para invertir los dgitos del nmero. Ej. N=459
invertido es 954, un solo nmero
Dado un nmero N que ingresa por teclado, realizar un
programa para sumar los dgitos del nmero. Ej. N=459 la
suma es 18
45