05. Swing Power Point)

64
Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN 1 Programación Gráfica (Swing)

Transcript of 05. Swing Power Point)

Page 1: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

1

Programación Gráfica (Swing)

Page 2: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

2

Java Foundation Class

• Conjunto de clases para mejorar el soporte al desarrollo de GUIs

• Swing: Conjunto de nuevos componentes visuales Extensión de AWT (Abstract Window Toolkit)

• Clases AWT java.awt.*

• Clases Swing javax.swing.J…

Page 3: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

3

javax.swing.JFrame

Ejemplo 01: import javax.swing.JFrame; public class Formulario { public static void main( String args[] ) { JFrame f = new JFrame(); f.setTitle("Mi Formulario"); f.setSize(200,200); f.setVisible(true); } }

Page 4: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

4

javax.swing.JOptionPane

Ejemplo 01b:

import javax.swing.JOptionPane; class Bienvenido4 {

public static void main( String args[] ) {

JOptionPane.showMessageDialog(null, "Bienvenido\na\nla programacion\nen Java!" ); System.exit( 0 );

} // fin del método main }

Page 5: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

5

Ejemplo 2:

import javax.swing.JOptionPane; // el programa utiliza JOptionPane public class Suma{ public static void main( String args[] ) { String primerNumero; // primera cadena introducida por el usuario String segundoNumero; // segunda cadena introducida por el usuario int numero1; // primer número a sumar int numero2; // segundo número a sumar int suma; // suma de numero1 y numero2 primerNumero = JOptionPane.showInputDialog( "Escriba el primer entero"); segundoNumero =JOptionPane.showInputDialog( "Escriba el segundo entero" ); numero1 = Integer.parseInt( primerNumero ); numero2 = Integer.parseInt( segundoNumero ); suma = numero1 + numero2; // mostrar el resultado JOptionPane.showMessageDialog( null, "La suma es " + suma, "Resultados", JOptionPane.PLAIN_MESSAGE ); System.exit( 0 ); // terminar aplicación con la ventana

} // fin del método main } // fin de la clase Suma

Page 6: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

6

Ejercicio 03: javax.swing.JTextArea /

javax.swing.JSrollPane

import javax.swing.*; public class OperadoresLogicos { public static void main( String args[] ) { JTextArea areaSalida = new JTextArea( 7, 20 ); JScrollPane desplazador = new JScrollPane( areaSalida );

String salida = "AND condicional (&&)" + "\nfalse && false: " + ( false && false ) + "\nfalse && true: " + ( false && true ) + "\ntrue && false: " + ( true && false ) + "\ntrue && true: " + ( true && true ); salida += "\n\nOR condicional (||)" + "\nfalse || false: " + ( false || false ) + "\nfalse || true: " + ( false || true ) + "\ntrue || false: " + ( true || false ) + "\ntrue || true: " + ( true || true );

areaSalida.setText( salida ); JOptionPane.showMessageDialog( null, desplazador, "Tablas de verdad", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } // fin de main

Page 7: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

7

} // fin de la clase OperadoresLogicos

java.awt.Container • Clase que implementa la funcionalidad de contener a otros componentes

• Los contenedores sirven para agrupar componentes visuales

• Cada contenedor tiene asociado un LayoutManager que distribuye los componentes en el interior del contenedor

Ejercicio 04:

import java.awt.Container; import javax.swing.*; public class CuadradoEnteros extends JApplet { public void init() { JTextArea areaSalida = new JTextArea(); Container contenedor = getContentPane(); contenedor.add( areaSalida ); int resultado; // guardar el resultado de la llamada al método cuadrado String salida = ""; // Objeto String que contiene los resultados // iterar 10 veces for ( int contador = 1; contador <= 10; contador++ ) { resultado = cuadrado( contador ); // llamada al método salida += "El cuadrado de " + contador + " es " + resultado + "\n";

} // fin de instrucción for areaSalida.setText( salida ); } // fin del método init

public int cuadrado( int y )

{ return y * y;

}

Page 8: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

8

}

Ejercicio05: javax.swing.JLabel

import java.awt.*;

import javax.swing.*; public class PruebaEtiqueta extends JFrame { private JLabel etiqueta1, etiqueta2, etiqueta3; public PruebaEtiqueta() { super( "Prueba de JLabel" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); etiqueta1 = new JLabel( "Etiqueta con texto" ); etiqueta1.setToolTipText( "Esta es la etiqueta1" ); contenedor.add( etiqueta1 ); Icon insecto = new ImageIcon( "insecto1.gif" ); etiqueta2 = new JLabel( "Etiqueta con texto e icono", insecto, SwingConstants.LEFT ); etiqueta2.setToolTipText( "Esta es la etiqueta2" ); contenedor.add( etiqueta2 ); etiqueta3 = new JLabel(); etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.setIcon( insecto ); etiqueta3.setHorizontalTextPosition( SwingConstants.CENTER ); etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM ); etiqueta3.setToolTipText( "Esta es la etiqueta3" ); contenedor.add( etiqueta3 ); setSize( 275, 170 ); setVisible( true );

Page 9: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

9

} // fin del constructor public static void main( String args[] ) { PruebaEtiqueta aplicacion = new PruebaEtiqueta(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase PruebaEtiqueta

Manejo de Eventos • GUIs Controladas por eventos

• Consta de tres partes: – Origen del evento componente GUI – Objeto del evento información acerca del evento – Componente de escucha del evento

• java.awt.event y javax.swing.event

• ActionEvent son manejados por ActionListener

• MouseEvent son manejados MouseListener

• KeyEvent son manejados KeyListener

Page 10: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

10

Ejercicio06: javax.swing.JTextField /

javax.swing.JPasswordField

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaCampoTexto extends JFrame { private JTextField campoTexto1, campoTexto2, campoTexto3; private JPasswordField campoContrasenia; public PruebaCampoTexto() { super( "Prueba de JTextField y JPasswordField" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); campoTexto1 = new JTextField( 10 ); contenedor.add( campoTexto1 ); campoTexto2 = new JTextField( "Escriba el texto aquí" ); contenedor.add( campoTexto2 ); campoTexto3 = new JTextField( "Campo de texto no editable", 20 ); campoTexto3.setEditable( false ); contenedor.add( campoTexto3 ); campoContrasenia = new JPasswordField( "Texto oculto" ); contenedor.add( campoContrasenia ); ManejadorCampoTexto manejador = new ManejadorCampoTexto();

Page 11: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

11

campoTexto1.addActionListener( manejador ); campoTexto2.addActionListener( manejador ); campoTexto3.addActionListener( manejador ); campoContrasenia.addActionListener( manejador ); setSize( 325, 100 ); setVisible( true ); } // fin del constructor de PruebaCampoTexto public static void main( String args[] ) { PruebaCampoTexto aplicacion = new PruebaCampoTexto(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } // clase interna privada para el manejo de eventos private class ManejadorCampoTexto implements ActionListener { // procesar eventos de campo de texto public void actionPerformed( ActionEvent evento ) { String cadena = ""; if ( evento.getSource() == campoTexto1 ) cadena = "campoTexto1: " + evento.getActionCommand(); else if ( evento.getSource() == campoTexto2 ) cadena = "campoTexto2: " + evento.getActionCommand(); else if ( evento.getSource() == campoTexto3 ) cadena = "campoTexto3: " + evento.getActionCommand(); else if ( evento.getSource() == campoContrasenia ) { cadena = "campoContrasenia: " + new String( campoContrasenia.getPassword() ); } JOptionPane.showMessageDialog( null, cadena ); } // fin del método actionPerformed } // fin de la clase interna privada ManejadorCampoTexto } // fin de la clase PruebaCampoTexto

Page 12: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

12

Ejercicio07: javax.swing.JButton

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaBoton extends JFrame { private JButton botonSimple, botonElegante; // configurar GUI public PruebaBoton() { super( "Prueba de botones" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); botonSimple = new JButton( "Botón simple" ); contenedor.add( botonSimple ); Icon insecto1 = new ImageIcon( "insecto1.gif" ); Icon insecto2 = new ImageIcon( "insecto2.gif" ); botonElegante = new JButton( "Botón elegante", insecto1 ); botonElegante.setRolloverIcon( insecto2 ); contenedor.add( botonElegante ); ManejadorBoton manejador = new ManejadorBoton(); botonElegante.addActionListener( manejador ); botonSimple.addActionListener( manejador ); setSize( 300, 100 ); setVisible( true ); } // fin del constructor de PruebaBoton

Page 13: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

13

public static void main( String args[] ) { PruebaBoton aplicacion = new PruebaBoton(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorBoton implements ActionListener { public void actionPerformed( ActionEvent evento ) { JOptionPane.showMessageDialog( PruebaBoton.this, "Usted oprimió: " + evento.getActionCommand() ); } } // fin de la clase interna privada ManejadorBoton } // fin de la clase PruebaBoton

java.awt.Color

• Implementa un color descrito según el RGB • RGB: Red-Green-Blue es un sistema de definición de colores, donde se especifica

el nivel de saturación de cada uno de esos tres colores mediante valores entre 0 y 255

• Se puede construir mediante un valor RGB:

– Color amarillo = new Color (255, 255, 0)

• O utilizar colores predefinidos mediante constantes: – Color amarillo = Color.YELLOW

Page 14: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

14

java.awt.Font

• Implementa la representación gráfica de una letra • Se define mediante: familia, estilo y tamaño • Ejemplo: tipoLetraSimple = new Font( "Serif", Font.PLAIN, 14 ); tipoLetraNegrita = new Font( "Serif", Font.BOLD, 14 ); tipoLetraCursiva = new Font( "Serif", Font.ITALIC, 14 ); • La clase java.awt.Component tiene el método:

– public void setFont (Font font)

java.awt.Cursor

• Implementa la representación gráfica del cursor • Existen varios predefinidos, que se pueden usar mediante el uso de constantes:

– Cruz: Cursor.CROSSHAIR_CURSOR – Mano: Cursor.HAND_CURSOR – Mover: Cursor.MOVE_CURSOR – Texto: Cursor.TEXT_CURSOR – Espera: Cursor.WAIT_CURSOR – Por defecto: Cursor.DEFAULT_CURSOR – ….

• La clase java.awt.Component tiene el método: – public void setCursor (Cursor cursor)

Page 15: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

15

Ejercicio08: javax.swing.JCheckBox

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaCasillaVerificacion extends JFrame { private JTextField campo; private JCheckBox negrita, cursiva; public PruebaCasillaVerificacion() { super( "Prueba de JCheckBox" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); campo = new JTextField( "Observe el cambio en el estilo de tipo de letra", 25 ); campo.setFont( new Font( "Serif", Font.PLAIN, 14 ) ); contenedor.add( campo ); negrita = new JCheckBox( "Negrita" ); contenedor.add( negrita ); cursiva = new JCheckBox( "Cursiva" ); contenedor.add( cursiva ); ManejadorCasillaVerificacion manejador = new ManejadorCasillaVerificacion(); negrita.addItemListener( manejador ); cursiva.addItemListener( manejador ); setSize( 300, 100 ); setVisible( true ); } // fin del constructor de PruebaCasillaVerificacion

Page 16: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

16

public static void main( String args[] ) { PruebaCasillaVerificacion aplicacion = new PruebaCasillaVerificacion(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorCasillaVerificacion implements ItemListener { private int valNegrita = Font.PLAIN; private int valCursiva = Font.PLAIN; public void itemStateChanged( ItemEvent evento ) { if ( evento.getSource() == negrita ) valNegrita = negrita.isSelected() ? Font.BOLD : Font.PLAIN; if ( evento.getSource() == cursiva ) valCursiva = cursiva.isSelected() ? Font.ITALIC : Font.PLAIN; campo.setFont( new Font( "Serif", valNegrita + valCursiva, 14 ) ); } // fin del método itemStateChanged } // fin de la clase interna privada ManejadorCasillaVerificacion } // fin de la clase PruebaCasillaVerificacion

Page 17: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

17

Ejercicio09: javax.swing.JRadioButton

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaBotonOpcion extends JFrame { private JTextField campo; private Font tipoLetraSimple, tipoLetraNegrita, tipoLetraCursiva, tipoLetraNegritaCursiva; private JRadioButton botonSimple, botonNegrita, botonCursiva, botonNegritaCursiva; private ButtonGroup grupoBotonesOpcion; // crear GUI y tipos de letra public PruebaBotonOpcion() { super( "Prueba de RadioButton" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); campo = new JTextField( "Observe cómo cambia el estilo del tipo de letra", 30 ); contenedor.add( campo ); botonSimple = new JRadioButton( "Simple", true ); contenedor.add( botonSimple ); botonNegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonNegrita ); botonCursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botonCursiva ); botonNegritaCursiva = new JRadioButton( "Negrita/Cursiva", false );

Page 18: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

18

contenedor.add( botonNegritaCursiva ); grupoBotonesOpcion = new ButtonGroup(); grupoBotonesOpcion.add( botonSimple ); grupoBotonesOpcion.add( botonNegrita ); grupoBotonesOpcion.add( botonCursiva ); grupoBotonesOpcion.add( botonNegritaCursiva ); tipoLetraSimple = new Font( "Serif", Font.PLAIN, 14 ); tipoLetraNegrita = new Font( "Serif", Font.BOLD, 14 ); tipoLetraCursiva = new Font( "Serif", Font.ITALIC, 14 ); tipoLetraNegritaCursiva = new Font( "Serif", Font.BOLD + Font.ITALIC, 14 ); campo.setFont( tipoLetraSimple ); // establecer tipo de letra inicial botonSimple.addItemListener( new ManejadorBotonOpcion( tipoLetraSimple ) ); botonNegrita.addItemListener( new ManejadorBotonOpcion( tipoLetraNegrita ) ); botonCursiva.addItemListener( new ManejadorBotonOpcion( tipoLetraCursiva ) ); botonNegritaCursiva.addItemListener( new ManejadorBotonOpcion( tipoLetraNegritaCursiva ) ); setSize( 350, 100 ); setVisible( true ); } // fin del constructor de PruebaBotonOpcion public static void main( String args[] ) { PruebaBotonOpcion aplicacion = new PruebaBotonOpcion(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorBotonOpcion implements ItemListener { private Font tipoDeLetra; public ManejadorBotonOpcion( Font f ) { tipoDeLetra = f; } public void itemStateChanged( ItemEvent evento ) { campo.setFont( tipoDeLetra );

Page 19: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

19

} } // fin de la clase interna privada ManejadorBotonOpcion } // fin de la clase PruebaBotonOpcion

Page 20: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

20

Ejercicio10: javax.swing.JToggleButton

import java.awt.*; import javax.swing.*; public class BotonToggle extends JFrame { private JToggleButton boton1, boton2; private ButtonGroup grupoBotonesOpcion; public BotonToggle() { super( "Prueba de JToogleButton" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); // crear botones de toggle boton1 = new JToggleButton( "Hombre", false ); contenedor.add( boton1 ); boton2 = new JToggleButton( "Mujer", true ); contenedor.add( boton2 ); grupoBotonesOpcion = new ButtonGroup(); grupoBotonesOpcion.add( boton1 ); grupoBotonesOpcion.add( boton2 ); setSize( 350, 100 ); setVisible( true ); } // fin del constructor de PruebaBotonOpcion public static void main( String args[] ) { BotonToggle aplicacion = new BotonToggle(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Page 21: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

21

} } // fin de la clase BotonToggle

Ejercicio11: javax.swing.JComboBox

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaCuadroComb extends JFrame { private JComboBox cuadroCombImagenes; private JLabel etiqueta; private String nombres[] = { "insecto1.gif", "insecto2.gif", "insectoviaje.gif", "insectanim.gif" }; private Icon iconos[] = { new ImageIcon( nombres[ 0 ] ), new ImageIcon( nombres[ 1 ] ),

new ImageIcon( nombres[ 2 ] ), new ImageIcon( nombres[ 3 ] ) }; public PruebaCuadroComb() { super( "Prueba de JComboBox" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); cuadroCombImagenes = new JComboBox( nombres ); cuadroCombImagenes.setMaximumRowCount( 3 ); cuadroCombImagenes.addItemListener( new ItemListener() { // clase interna anónima public void itemStateChanged( ItemEvent evento ) {

if ( evento.getStateChange() == ItemEvent.SELECTED ) etiqueta.setIcon( iconos[cuadroCombImagenes.getSelectedIndex() ] ); } } // fin de la clase interna anónima

Page 22: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

22

); // fin de la llamada a addItemListener contenedor.add( cuadroCombImagenes ); etiqueta = new JLabel( iconos[ 0 ] ); contenedor.add( etiqueta ); setSize( 350, 150 ); setVisible( true ); } // fin del constructor de PruebaCuadroComb public static void main( String args[] ) { PruebaCuadroComb aplicacion = new PruebaCuadroComb(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase PruebaCuadroComb

Page 23: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

23

Ejercicio12: javax.swing.JList

Ejemplo de listas de selección simple:

import java.awt.*; import javax.swing.*; import javax.swing.event.*; public class PruebaLista extends JFrame { private JList listaColores; private Container contenedor; private final String nombresColores[] = { "Negro", "Azul", "Cyan", "Gris oscuro", "Gris", "Verde", "Gris claro", "Magenta", "Naranja", "Rosa", "Rojo", "Blanco", "Amarillo" }; private final Color colores[] = { Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW }; public PruebaLista() { super( "Prueba de JList" ); contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); listaColores = new JList( nombresColores ); listaColores.setVisibleRowCount( 5 ); listaColores.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); contenedor.add( new JScrollPane( listaColores ) );

Page 24: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

24

listaColores.addListSelectionListener( new ListSelectionListener() { // clase interna anónima public void valueChanged( ListSelectionEvent evento ) { contenedor.setBackground(colores[ listaColores.getSelectedIndex() ] ); } } // fin de la clase interna anónima ); // fin de la llamada a addListSelectionListener setSize( 350, 150 ); setVisible( true ); } // fin del constructor de PruebaLista public static void main( String args[] ) { PruebaLista aplicacion = new PruebaLista(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase PruebaLista

Page 25: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

25

Ejercicio13: Ejemplo de listas de selección múltiple:

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaSeleccionMultiple extends JFrame { private JList listaColores, listaCopia; private JButton botonCopiar; private final String nombresColores[] = { "Negro", "Azul", "Cyan", "Gris oscuro", "Gris", "Verde", "Gris claro", "Magenta", "Naranja", "Rosa", "Rojo", "Blanco", "Amarillo" }; public PruebaSeleccionMultiple() { super( "Listas de selección múltiple" ); Container contenedor = getContentPane(); contenedor.setLayout( new FlowLayout() ); listaColores = new JList( nombresColores ); listaColores.setVisibleRowCount( 5 ); listaColores.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ); contenedor.add( new JScrollPane( listaColores ) ); botonCopiar = new JButton( "Copiar >>>" ); botonCopiar.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento ) { listaCopia.setListData( listaColores.getSelectedValues() ); }

Page 26: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

26

} // fin de clase interna anónima ); // fin de la llamada a addActionListener contenedor.add( botonCopiar ); listaCopia = new JList( ); listaCopia.setVisibleRowCount( 5 ); listaCopia.setFixedCellWidth( 100 ); listaCopia.setFixedCellHeight( 15 ); listaCopia.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION ); contenedor.add( new JScrollPane( listaCopia ) ); setSize( 325, 130 ); setVisible( true ); } // fin del constructor PruebaSeleccionMultiple public static void main( String args[] ) { PruebaSeleccionMultiple aplicacion = new PruebaSeleccionMultiple(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase PruebaSeleccionMultiple

Page 27: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

27

Eventos de Ratón

• Los interfaces de escucha de eventos son: MouseListener y MouseMotionListener • MouseListener

– public void mousePressed ( MouseEvent evento) – public void mouseClicked ( MouseEvent evento) – public void mouseReleased ( MouseEvent evento) – public void mouseEntered ( MouseEvent evento) – public void mouseExited ( MouseEvent evento)

• MouseMotionListener – public void mouseDragged ( MouseEvent evento) – public void mouseMoved ( MouseEvent evento)

• MouseWheelListener – public void mouseWheelMoved( MouseWheelEvent e )

Ejercicio14:

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class RastreadorRaton extends JFrame implements MouseListener, MouseMotionListener { private JLabel barraEstado; public RastreadorRaton() { super( "Demostración de los eventos de ratón" ); barraEstado = new JLabel(); getContentPane().add( barraEstado, BorderLayout.SOUTH ); addMouseListener( this ); addMouseMotionListener( this ); setSize( 300, 125 ); setVisible( true ); }

Page 28: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

28

public void mouseClicked( MouseEvent evento ) { barraEstado.setText( "Se hizo clic en [" + evento.getX() + ", " + evento.getY() + "]" ); } public void mousePressed( MouseEvent evento ) { barraEstado.setText( "Se oprimió en [" + evento.getX() + ", " + evento.getY() + "]" ); } public void mouseReleased( MouseEvent evento ) { barraEstado.setText( "Se soltó en [" + evento.getX() + ", " + evento.getY() + "]" ); } public void mouseEntered( MouseEvent evento ) { barraEstado.setText( "Ratón entro en [" + evento.getX() + ", " + evento.getY() + "]" ); getContentPane().setBackground( Color.GREEN ); } public void mouseExited( MouseEvent evento ) { barraEstado.setText( "Ratón fuera de la ventana" ); getContentPane().setBackground( Color.WHITE ); } public void mouseDragged( MouseEvent evento ) { barraEstado.setText( "Se arrastró en [" + evento.getX() + ", " + evento.getY() + "]" ); } public void mouseMoved( MouseEvent evento ) { barraEstado.setText( "Se movió en [" + evento.getX() + ", " + evento.getY() + "]" ); } public static void main( String args[] ) { RastreadorRaton aplicacion = new RastreadorRaton(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase RastreadorRaton

Page 29: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

29

CLASES ADAPTADORAS

No siempre es deseable declarar todos los métodos de una interfaz de escucha de eventos.

java.awt.event y javax.swing.event proporcionan clases adaptadoras de escucha de eventos.

Pasamos de usar una interfaz a usar una clase Sólo tenemos que redefinir los métodos que necesitamos.

Clase adaptadora de eventos

Implementa a la Interfaz

ComponentAdapter ComponentListener

ContainerAdapter ContainerListener

FocusAdapter FocusListener

KeyAdapter KeyListener

MouseAdapter MouseListener

MouseAdapter MouseWheelListener

MouseMotionAdapter MouseMotionListiner

WindowAdapter WindowListener

¿solución?

Page 30: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

30

Ejercicio pintor 1: Vamos a pintar con el ratón import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Pintor extends JFrame { private int cuentaPuntos = 0; private Point puntos[] = new Point[ 1000 ]; public Pintor() { super( "Un programa simple de dibujo" ); getContentPane().add( new JLabel( "Arrastre el ratón para dibujar" ), BorderLayout.SOUTH ); addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged( MouseEvent evento ) { if ( cuentaPuntos < puntos.length ) { puntos[ cuentaPuntos ] = evento.getPoint(); ++cuentaPuntos; repaint(); } } } // fin de la clase interna anónima ); // fin de la llamada a addMouseMotionListener setSize( 300, 150 ); setVisible( true ); } // fin del constructor de Pintor public void paint( Graphics g ) { super.paint( g ); for ( int i = 0; i < puntos.length && puntos[ i ] != null; i++ ) g.fillOval( puntos[ i ].x, puntos[ i ].y, 4, 4 ); } public static void main( String args[] ) { Pintor aplicacion = new Pintor();

Page 31: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

31

aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase Pintor

Ejercicio 15: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DetallesRaton extends JFrame { private int xPos, yPos; public DetallesRaton() { super( "Clics y botones del ratón" ); addMouseListener( new ManejadorClicsRaton() ); setSize( 350, 150 ); setVisible( true ); } public void paint( Graphics g ) { super.paint( g ); g.drawString( "Se hizo clic en: [" + xPos + ", " + yPos + "]", xPos, yPos ); } public static void main( String args[] ) { DetallesRaton aplicacion = new DetallesRaton(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorClicsRaton extends MouseAdapter { public void mouseClicked( MouseEvent evento ) { xPos = evento.getX(); yPos = evento.getY(); String titulo = "Se hizo clic " + evento.getClickCount() + " Veces"; if ( evento.isMetaDown() ) titulo += " con el botón derecho del ratón"; else if ( evento.isAltDown() )

Page 32: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

32

titulo += " con el botón central del ratón"; else titulo += " con el botón izquierdo del ratón"; setTitle( titulo ); repaint(); } // fin del método mouseClicked } // fin de la clase interna privada ManejadorClicsRaton } // fin de la clase DetallesRaton

MANEJO DE EVENTOS DE TECLADO

Eventos de teclas interfaz KeyListener

KeyListener proporciona los siguientes métodos: o keyPressed o keyReleased o keyTyped

Existe la clase adaptadora KeyAdapter

Teclas de acción: las teclas de dirección, Inicio, Fin, Re Pág, Av Pag, Bloq Num, Impr Pant, Bloq Despl, Bloq May, Pausa

Teclas modificadoras: Mayús, Alt, Ctrl

Page 33: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

33

Ejercicio16: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoTeclas extends JFrame implements KeyListener { private String linea1 = "", linea2 = "", linea3 = ""; private JTextArea areaTexto; public DemoTeclas() { super( "Demostración de eventos de pulsación de tecla" ); areaTexto = new JTextArea( 10, 15 ); areaTexto.setText( "Oprima cualquier tecla en el teclado..." ); areaTexto.setEnabled( false ); areaTexto.setDisabledTextColor( Color.BLACK ); getContentPane().add( areaTexto ); addKeyListener( this ); // permitir al marco procesar eventos de teclas setSize( 350, 100 ); setVisible( true ); } // fin del constructor de DemoTeclas public void keyPressed( KeyEvent evento ) { linea1 = "Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() ); establecerLineas2y3( evento ); } public void keyReleased( KeyEvent evento ) { linea1 = "Se soltó tecla: " + evento.getKeyText( evento.getKeyCode() ); establecerLineas2y3( evento ); } public void keyTyped( KeyEvent evento ) { linea1 = "Se escribió tecla: " + evento.getKeyChar(); establecerLineas2y3( evento );

Page 34: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

34

} private void establecerLineas2y3( KeyEvent evento ) { linea2 = "Esta tecla " + ( evento.isActionKey() ? "" : "no " ) + "es una tecla de acción"; String temp = evento.getKeyModifiersText( evento.getModifiers() ); linea3 = "Teclas modificadoras oprimidas: " + ( temp.equals( "" ) ? "ninguna" : temp ); areaTexto.setText( linea1 + "\n" + linea2 + "\n" + linea3 + "\n" ); } public static void main( String args[] ) { DemoTeclas aplicacion = new DemoTeclas(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoTeclas

Page 35: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

35

ADMINISTRADORES DE ESQUEMAS

Se proporcionan para ordenar los componentes de la GUI en un contenedor (Container)

FlowLayout, BorderLayout, GridLayout

FlowLayout

Coloca los componentes, de la GUI, en un contenedor de izquierda a derecha (en el orden que se agregaron al contenedor).

Alinea los componentes de la GUI en el contenedor, a la izquierda, al centro (el valor predeterminado) y a la derecha.

Page 36: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

36

Ejercicio17: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoFlowLayout extends JFrame { private JButton botonIzquierda, botonCentro, botonDerecho; private Container contenedor; private FlowLayout esquema; public DemoFlowLayout() { super( "Demostración de FlowLayout" ); esquema = new FlowLayout(); contenedor = getContentPane(); contenedor.setLayout( esquema ); botonIzquierda = new JButton( "Izquierda" ); contenedor.add( botonIzquierda ); botonIzquierda.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento ) { esquema.setAlignment( FlowLayout.LEFT ); esquema.layoutContainer( contenedor ); } } // fin de la clase interna anónima ); // fin de la llamada a addActionListener botonCentro = new JButton( "Centro" ); contenedor.add( botonCentro ); botonCentro.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento ) { esquema.setAlignment( FlowLayout.CENTER ); esquema.layoutContainer( contenedor ); } } ); botonDerecho = new JButton( "Derecha" );

Page 37: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

37

contenedor.add( botonDerecho ); botonDerecho.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento ) { esquema.setAlignment( FlowLayout.RIGHT ); esquema.layoutContainer( contenedor ); } } ); setSize( 300, 75 ); setVisible( true ); } // fin del constructor DemoFlowLayout public static void main( String args[] ) { DemoFlowLayout aplicacion = new DemoFlowLayout(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoFlowLayout

Page 38: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

38

BorderLayout

Esquema predeterminado para el panel de contenido de un objeto JFrame

Ordena los componentes en 5 regiones:

Ejercicio18: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoBorderLayout extends JFrame implements ActionListener { private JButton botones[]; private final String nombres[] = { "Ocultar norte", "Ocultar sur", "Ocultar este", "Ocultar oeste", "Ocultar centro" }; private BorderLayout esquema; public DemoBorderLayout() { super( "Demostración de BorderLayout" ); esquema = new BorderLayout( 5, 5 ); Container contenedor = getContentPane(); contenedor.setLayout( esquema ); botones = new JButton[ nombres.length ];

Page 39: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

39

for ( int cuenta = 0; cuenta < nombres.length; cuenta++ ) { botones[ cuenta ] = new JButton( nombres[ cuenta ] ); botones[ cuenta ].addActionListener( this ); } contenedor.add( botones[ 0 ], BorderLayout.NORTH ); contenedor.add( botones[ 1 ], BorderLayout.SOUTH ); contenedor.add( botones[ 2 ], BorderLayout.EAST ); contenedor.add( botones[ 3 ], BorderLayout.WEST ); contenedor.add( botones[ 4 ], BorderLayout.CENTER ); setSize( 350, 200 ); setVisible( true ); } // fin del constructor de DemoBorderLayout // manejar eventos de botón public void actionPerformed( ActionEvent evento ) { for ( int cuenta = 0; cuenta < botones.length; cuenta++ ) if ( evento.getSource() == botones[ cuenta ] ) botones[ cuenta ].setVisible( false ); else botones[ cuenta ].setVisible( true ); esquema.layoutContainer( getContentPane() ); } public static void main( String args[] ) { DemoBorderLayout aplicacion = new DemoBorderLayout(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoBorderLayout

Page 40: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

40

GridLayout

Divide el contenedor en una cuadrícula, de manera que los componentes pueden colocarse en filas y columnas.

Ejercicio19: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoGridLayout extends JFrame implements ActionListener { private JButton botones[]; private final String nombres[] = { "uno", "dos", "tres", "cuatro", "cinco", "seis" }; private boolean alternar = true; private Container contenedor; private GridLayout cuadricula1, cuadricula2; public DemoGridLayout() { super( "Demostración de GridLayout" ); cuadricula1 = new GridLayout( 2, 3, 5, 5 ); cuadricula2 = new GridLayout( 3, 2 ); contenedor = getContentPane(); contenedor.setLayout( cuadricula1 );

Page 41: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

41

botones = new JButton[ nombres.length ]; for ( int cuenta = 0; cuenta < nombres.length; cuenta++ ) { botones[ cuenta ] = new JButton( nombres[ cuenta ] ); botones[ cuenta ].addActionListener( this ); contenedor.add( botones[ cuenta ] ); } setSize( 300, 150 ); setVisible( true ); } // fin del constructor de DemoGridLayout public void actionPerformed( ActionEvent evento ) { if ( alternar ) contenedor.setLayout( cuadricula2 ); else contenedor.setLayout( cuadricula1 ); alternar = !alternar; contenedor.validate(); } public static void main( String args[] ) { DemoGridLayout aplicacion = new DemoGridLayout(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoGridLayout

Page 42: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

42

javax.swing.JPanel

GUIs complejas Formadas por varios paneles, en donde los componentes de cada panel se ordenan en un esquema específico.

Se pueden agregar componentes a los objetos JPanel

Ejercicio20: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoPanel extends JFrame { private JPanel panelBotones; private JButton botones[]; public DemoPanel() { super( "Demostración JPanel" ); Container contenedor = getContentPane(); botones = new JButton[ 5 ]; panelBotones = new JPanel(); panelBotones.setLayout( new GridLayout( 1, botones.length ) ); for ( int cuenta = 0; cuenta < botones.length; cuenta++ ) { botones[ cuenta ] = new JButton( "Botón " + ( cuenta + 1 ) ); panelBotones.add( botones[ cuenta ] ); } contenedor.add( panelBotones, BorderLayout.SOUTH ); setSize( 425, 150 ); setVisible( true ); } // fin del constructor de DemoPanel public static void main( String args[] ) { DemoPanel aplicacion = new DemoPanel(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoPanel

Page 43: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

43

Ejercicio21: javax.Swing.JSlider

import java.awt.*; import javax.swing.*; public class PanelOvalo extends JPanel { private int diametro = 10; // dibujar un óvalo del diámetro especificado public void paintComponent( Graphics g ) { super.paintComponent( g ); g.fillOval( 10, 10, diametro, diametro ); } // validar y establecer el diámetro, después repintar public void establecerDiametro( int nuevoDiametro ) { // si el diámetro es inválido, usar valor predeterminado de 10 diametro = ( nuevoDiametro >= 0 ? nuevoDiametro : 10 ); repaint(); } public Dimension getPreferredSize() {

Page 44: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

44

return new Dimension( 200, 200 ); } public Dimension getMinimumSize() { return getPreferredSize(); } import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class DemoSlider extends JFrame { private JSlider sliderDiametro; private PanelOvalo miPanel; public DemoSlider() { super( "Demostración de JSlider" ); miPanel = new PanelOvalo(); miPanel.setBackground( Color.YELLOW ); sliderDiametro = new JSlider( SwingConstants.HORIZONTAL, 0, 200, 10 ); sliderDiametro.setMajorTickSpacing( 100 ); sliderDiametro.setPaintTicks( true ); sliderDiametro.addChangeListener( new ChangeListener() { // clase interna anónima public void stateChanged( ChangeEvent e ) { miPanel.establecerDiametro( sliderDiametro.getValue() ); } } // fin de la clase interna anónima ); // fin de la llamada a addChangeListener Container contenedor = getContentPane(); contenedor.add( sliderDiametro, BorderLayout.SOUTH );

Page 45: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

45

contenedor.add( miPanel, BorderLayout.CENTER ); setSize( 220, 270 ); setLocation (100, 500); setVisible( true ); } // fin del constructor de DemoSlider public static void main( String args[] ) { DemoSlider aplicacion = new DemoSlider(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoSlider

Page 46: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

46

Ejercicio22: javax.swing.JMenu

// Demostración de los menús import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaMenu extends JFrame { private final Color valoresColor[] = { Color.black, Color.blue, Color.red, Color.green }; private JRadioButtonMenuItem elementosColor[], tiposLetra[]; private JCheckBoxMenuItem elementosEstilo[]; private JLabel pantallaEtiqueta; private ButtonGroup grupoTiposLetra, grupoColores; private int estilo; public PruebaMenu() { super( "Uso de objetos JMenu" ); JMenu menuArchivo = new JMenu( "Archivo" ); menuArchivo.setMnemonic( 'A' ); JMenuItem elementoAcerca = new JMenuItem( "Acerca de..." ); elementoAcerca.setMnemonic( 'c' ); menuArchivo.add( elementoAcerca ); elementoAcerca.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento )

Page 47: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

47

{ JOptionPane.showMessageDialog( PruebaMenu.this, "Éste es un ejemplo\ndel uso de menús", "Acerca de", JOptionPane.PLAIN_MESSAGE ); } } // fin de la clase interna anónima ); // fin de la llamada a addActionListener JMenuItem elementoSalir = new JMenuItem( "Salir" ); elementoSalir.setMnemonic( 'S' ); menuArchivo.add( elementoSalir ); elementoSalir.addActionListener( new ActionListener() { // clase interna anónima public void actionPerformed( ActionEvent evento ) { System.exit( 0 ); } } // fin de la clase interna anónima ); // fin de la llamada a addActionListener JMenuBar barra = new JMenuBar(); setJMenuBar( barra ); barra.add( menuArchivo ); JMenu menuFormato = new JMenu( "Formato" ); menuFormato.setMnemonic( 'F' ); String colores[] = { "Negro", "Azul", "Rojo", "Verde" }; JMenu menuColor = new JMenu( "Color" ); menuColor.setMnemonic( 'C' ); elementosColor = new JRadioButtonMenuItem[ colores.length ]; grupoColores = new ButtonGroup(); ManejadorEventos manejadorEventos = new ManejadorEventos(); for ( int cuenta = 0; cuenta < colores.length; cuenta++ ) { elementosColor[ cuenta ] = new JRadioButtonMenuItem( colores[ cuenta ] );

Page 48: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

48

menuColor.add( elementosColor[ cuenta ] ); grupoColores.add( elementosColor[ cuenta ] ); elementosColor[ cuenta ].addActionListener( manejadorEventos ); } elementosColor[ 0 ].setSelected( true ); menuFormato.add( menuColor ); menuFormato.addSeparator(); String nombresTiposLetra[] = { "Serif", "Monospaced", "SansSerif" }; JMenu menuTiposLetra = new JMenu( "Tipo de letra" ); menuTiposLetra.setMnemonic( 'T' ); tiposLetra = new JRadioButtonMenuItem[ nombresTiposLetra.length ]; grupoTiposLetra = new ButtonGroup(); for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ ) { tiposLetra[ cuenta ] = new JRadioButtonMenuItem( nombresTiposLetra[ cuenta ] ); menuTiposLetra.add( tiposLetra[ cuenta ] ); grupoTiposLetra.add( tiposLetra[ cuenta ] ); tiposLetra[ cuenta ].addActionListener( manejadorEventos ); } tiposLetra[ 0 ].setSelected( true ); menuTiposLetra.addSeparator(); String nombresEstilo[] = { "Negrita", "Cursiva" }; elementosEstilo = new JCheckBoxMenuItem[ nombresEstilo.length ]; ManejadorEstilo manejadorEstilo = new ManejadorEstilo(); for ( int cuenta = 0; cuenta < nombresEstilo.length; cuenta++ ) { elementosEstilo[ cuenta ] = new JCheckBoxMenuItem( nombresEstilo[ cuenta ] ); menuTiposLetra.add( elementosEstilo[ cuenta ] ); elementosEstilo[ cuenta ].addItemListener( manejadorEstilo ); } menuFormato.add( menuTiposLetra ); barra.add( menuFormato ); pantallaEtiqueta = new JLabel( "Texto de ejemplo", SwingConstants.CENTER ); pantallaEtiqueta.setForeground( valoresColor[ 0 ] ); //color de la fuente pantallaEtiqueta.setFont( new Font( "Serif", Font.PLAIN, 72 ) );

Page 49: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

49

getContentPane().setBackground( Color.CYAN ); getContentPane().add( pantallaEtiqueta, BorderLayout.CENTER ); setSize( 550, 200 ); setVisible( true ); } // fin del constructor public static void main( String args[] ) { PruebaMenu aplicacion = new PruebaMenu(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorEventos implements ActionListener { public void actionPerformed( ActionEvent evento ) { for ( int cuenta = 0; cuenta < elementosColor.length; cuenta++ ) if ( elementosColor[ cuenta ].isSelected() ) { pantallaEtiqueta.setForeground( valoresColor[ cuenta ] ); break; } for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ ) if ( evento.getSource() == tiposLetra[ cuenta ] ) { pantallaEtiqueta.setFont( new Font( tiposLetra[ cuenta ].getText(), estilo, 72 ) ); break; } repaint(); } // fin del método actionPerformed } // fin de la clase ManejadorEventos private class ManejadorEstilo implements ItemListener { public void itemStateChanged( ItemEvent e ) { estilo = 0; if ( elementosEstilo[ 0 ].isSelected() ) estilo += Font.BOLD; if ( elementosEstilo[ 1 ].isSelected() ) estilo += Font.ITALIC;

Page 50: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

50

pantallaEtiqueta.setFont( new Font( pantallaEtiqueta.getFont().getName(), estilo, 72 ) ); repaint(); } } // fin de la clase ManejadorEstilo } // fin de la clase PruebaMenu

Page 51: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

51

Ejercicio23: javax.swing.JPopupMenu

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaContextual extends JFrame { private JRadioButtonMenuItem elementos[]; private final Color valoresColor[] = { Color.BLUE, Color.YELLOW, Color.RED }; private JPopupMenu menuContextual; public PruebaContextual() { super( "Uso de objetos JPopupMenu" ); ManejadorEventos manejador = new ManejadorEventos(); String colores[] = { "Azul", "Amarillo", "Rojo" }; ButtonGroup grupoColores = new ButtonGroup(); menuContextual = new JPopupMenu(); elementos = new JRadioButtonMenuItem[ 3 ]; for ( int cuenta = 0; cuenta < elementos.length; cuenta++ ) { elementos[ cuenta ] = new JRadioButtonMenuItem( colores[ cuenta ] ); menuContextual.add( elementos[ cuenta ] ); grupoColores.add( elementos[ cuenta ] ); elementos[ cuenta ].addActionListener( manejador ); } getContentPane().setBackground( Color.WHITE ); addMouseListener( new MouseAdapter() { // clase interna anónima public void mousePressed( MouseEvent evento )

Page 52: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

52

{ checkForTriggerEvent( evento ); } public void mouseReleased( MouseEvent evento ) { checkForTriggerEvent( evento ); } private void checkForTriggerEvent( MouseEvent evento ) { if ( evento.isPopupTrigger() ) menuContextual.show( evento.getComponent(), evento.getX(), evento.getY() ); } } // fin de la clase interna anónima ); // fin de la llamada a addMouseListener setSize( 300, 200 ); setVisible( true ); } // fin del constructor de PruebaContextual public static void main( String args[] ) { PruebaContextual aplicacion = new PruebaContextual(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } private class ManejadorEventos implements ActionListener { public void actionPerformed( ActionEvent evento ) { for ( int i = 0; i < elementos.length; i++ ) if ( evento.getSource() == elementos[ i ] ) { getContentPane().setBackground( valoresColor[ i ] ); return; } } } // fin de la clase interna privada ManejadorEventos } // fin de la clase PruebaContextual

Page 53: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

53

Ejercicio24: javax.swing.JTabbedPane

import java.awt.*; import javax.swing.*; public class DemoJTabbedPane extends JFrame { public DemoJTabbedPane() { super( "Demo de JTabbedPane " ); JTabbedPane panelConFichas = new JTabbedPane(); JLabel etiqueta1 = new JLabel( "panel uno", SwingConstants.CENTER ); JPanel panel1 = new JPanel(); panel1.add( etiqueta1 ); panelConFichas.addTab( "Ficha uno", null, panel1, "Primer panel" ); JLabel etiqueta2 = new JLabel( "panel dos", SwingConstants.CENTER ); JPanel panel2 = new JPanel(); panel2.setBackground( Color.YELLOW ); panel2.add( etiqueta2 ); panelConFichas.addTab( "Ficha dos", null, panel2, "Segundo panel" ); JLabel etiqueta3 = new JLabel( "panel tres" ); JPanel panel3 = new JPanel(); panel3.setLayout( new BorderLayout() ); panel3.add( new JButton( "Norte" ), BorderLayout.NORTH ); panel3.add( new JButton( "Oeste" ), BorderLayout.WEST ); panel3.add( new JButton( "Este" ), BorderLayout.EAST ); panel3.add( new JButton( "Sur" ), BorderLayout.SOUTH ); panel3.add( etiqueta3, BorderLayout.CENTER ); panelConFichas.addTab( "Ficha tres", null, panel3, "Tercer panel" );

Page 54: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

54

getContentPane().add( panelConFichas ); setSize( 250, 200 ); setVisible( true ); } // fin del constructor public static void main( String args[] ) { DemoJTabbedPane demoPanelConFichas = new DemoJTabbedPane(); demoPanelConFichas.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoJTabbedPane

Page 55: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

55

Ejercicio25: javax.swing.JInternalFrame

import javax.swing.JFrame; import javax.swing.JInternalFrame; public class JInternalFrameTest { public static void main (String arg[]){ JFrame f = new JFrame("Mi JInternalFrameTes"); f.getContentPane().setLayout(null); f.setSize(230,200); JInternalFrame f1 = new JInternalFrame("InternalFrame 1"); f1.setBounds(10,10,150,100); f1.setVisible(true); JInternalFrame f2 = new JInternalFrame("InternalFrame 2"); f2.setBounds(50,50,150,100); f2.setVisible(true); f.getContentPane().add(f1); f.getContentPane().add(f2); f.setVisible(true); } }

Page 56: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

56

Ejercicio26: javax.swing.JSpinner

import java.awt.FlowLayout; import javax.swing.*; public class JSpinnerTest { public static void main (String arg[]){ JFrame f = new JFrame("Mi JSpinnerTest"); f.setSize(200,300); f.getContentPane().setLayout(new FlowLayout()); String dias[]={"L", "M", "X", "J", "V","S","D"}; SpinnerListModel s_modelo = new SpinnerListModel (dias); JSpinner s = new JSpinner(s_modelo); f.getContentPane().add(s); f.setVisible(true); } }

Page 57: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

57

Ejercicio27: javax.swing.JDialog

import javax.swing.*; public class JDialogTest { public static void main (String arg[]){ JFrame f = new JFrame ("Mi formulario"); f.setSize(300,200); f.setVisible(true); JDialog di = new JDialog(f); di.setTitle("Prueba JDialog"); di.setBounds(60,60,60,70); di.setVisible(true); } }

Page 58: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

58

OTROS ADMINISTRADORES DE ESQUEMAS

BoxLayout

Permite ordenar los componentes de izquierda a derecha, o de arriba hacia abajo

Ejercicio28 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoBoxLayout extends JFrame { // configurar GUI public DemoBoxLayout() { super( "Demo de BoxLayout" ); Box horizontal1 = Box.createHorizontalBox(); Box vertical1 = Box.createVerticalBox(); Box horizontal2 = Box.createHorizontalBox(); Box vertical2 = Box.createVerticalBox(); final int TAMANIO = 3; // agregar botones al objeto Box horizontal1 for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) horizontal1.add( new JButton( "Botón " + cuenta ) ); // crear montante y agregar botones al objeto Box vertical1 for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) { vertical1.add( Box.createVerticalStrut( 25 ) ); vertical1.add( new JButton( "Botón " + cuenta ) ); } for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) { horizontal2.add( Box.createHorizontalGlue() ); horizontal2.add( new JButton( "Botón " + cuenta ) );

Page 59: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

59

} for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) { vertical2.add( Box.createRigidArea( new Dimension( 12, 8 ) ) ); vertical2.add( new JButton( "Botón " + cuenta ) ); } JPanel panel = new JPanel(); panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS ) ); for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) { panel.add( Box.createGlue() ); panel.add( new JButton( "Botón " + cuenta ) ); } // crear un objeto JTabbedPane JTabbedPane fichas = new JTabbedPane( JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT ); // colocar cada contendor en panel con fichas fichas.addTab( "Cuadro horizontal", horizontal1 ); fichas.addTab( "Cuadro vertical con montantes", vertical1 ); fichas.addTab( "Cuadro horizontal con pegamento", horizontal2 ); fichas.addTab( "Cuadro vertical con áreas rígidas", vertical2 ); fichas.addTab( "Cuadro vertical con pegamento", panel ); getContentPane().add( fichas ); // colocar panel con fichas en el panel de contenido setSize( 400, 220 ); setVisible( true ); } // fin del constructor public static void main( String args[] ) { DemoBoxLayout aplicacion = new DemoBoxLayout(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoBoxLayout

Page 60: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

60

GridBagLayout

El más complejo y poderoso de los administradores de esquemas predefinidos

Los componentes pueden variar de tamaño

Pueden agregarse en cualquier orden

Ejercicio29 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoGridBag extends JFrame { private Container contenedor; private GridBagLayout esquema; private GridBagConstraints restricciones; // configurar GUI public DemoGridBag() { super( "GridBagLayout" ); contenedor = getContentPane(); esquema = new GridBagLayout(); contenedor.setLayout( esquema ); restricciones = new GridBagConstraints(); JTextArea areaTexto1 = new JTextArea( "AreaTexto1", 5, 10 ); JTextArea areaTexto2 = new JTextArea( "AreaTexto2", 2, 2 ); String nombres[] = { "Hierro", "Acero", "Cobre" }; JComboBox cuadroCombinado = new JComboBox( nombres ); JTextField campoTexto = new JTextField( "CampoTexto" ); JButton boton1 = new JButton( "Botón 1" ); JButton boton2 = new JButton( "Botón 2" ); JButton boton3 = new JButton( "Botón 3" );

Page 61: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

61

restricciones.fill = GridBagConstraints.BOTH; agregarComponente( areaTexto1, 0, 0, 1, 3 ); restricciones.fill = GridBagConstraints.HORIZONTAL; agregarComponente( boton1, 0, 1, 2, 1 ); agregarComponente( cuadroCombinado, 2, 1, 2, 1 ); // boton2 restricciones.weightx = 1000; restricciones.weighty = 1; restricciones.fill = GridBagConstraints.BOTH; agregarComponente( boton2, 1, 1, 1, 1 ); //boton3 restricciones.weightx = 0; restricciones.weighty = 0; agregarComponente( boton3, 1, 2, 1, 1 ); agregarComponente( campoTexto, 3, 0, 2, 1 ); agregarComponente( areaTexto2, 3, 2, 1, 1 ); setSize( 300, 150 ); setVisible( true ); } // fin del constructor de DemoGridBag // método para establecer restricciones private void agregarComponente( Component componente, int fila, int columna, int anchura, int altura ) { // establecer gridx y gridy restricciones.gridx = columna; restricciones.gridy = fila; // establecer gridwidth y gridheight restricciones.gridwidth = anchura; restricciones.gridheight = altura; // establecer restricciones y agregar componente esquema.setConstraints( componente, restricciones );

Page 62: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

62

contenedor.add( componente ); } public static void main( String args[] ) { DemoGridBag aplicacion = new DemoGridBag(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } // fin de la clase DemoGridBag

Page 63: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

63

Look & Feel

Look & Feel disponibles: UIManager.LookAndFeelInfo[] info=UIManager.getInstalledLookAndFeels(); for (int i=0; i<info.length; i++){ System.out.println(info[i].getClassName()); }

setLookAndFeel() con cualquiera de los disponibles: UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

Page 64: 05. Swing Power Point)

Acción Financiada por la Fundación para el Desarrollo de la Formación en las Zonas Mineras del Carbón en el marco del

PROGRAMA DE AYUDAS Y BECAS EN ZONAS MINERAS DEL CARBÓN

64

[email protected]

[email protected]