SlideShare una empresa de Scribd logo
1 de 39
7. Profundizando en Swing
             Componentes y contenedores de Swing
             Un vistazo a algunos de los más usados
             Modelos de datos
             Look & feel
             Dibujando en Java
             Hilo de Swing



Programación III                 Tema 7b - Swing
Componentes Swing (1)
   • Una buena referencia: Java Tutorials
   • Veamos algunos de los componentes más significativos
           – Controles básicos




Programación III                 Tema 7b - Swing
Componentes Swing (2)

   • Edición
     con
     formato
     específico




Programación III             Tema 7b - Swing
Componentes Swing (3)

   • Muestra de información no editable




Programación III             Tema 7b - Swing
Contenedores Swing (1)

   • Contenedores de primer nivel (top-level)




Programación III              Tema 7b - Swing
Contenedores Swing (2)

   • Propósito general y específico




Programación III              Tema 7b - Swing
Descripción de
                componentes
   • Hacemos un recorrido por algunos de los
     componentes más útiles de Swing
   • Usar cada uno requiere consultar la
     documentación para:
           –       Tipo de uso (¿es lo que necesitamos?)
           –       Modo de construirlo
           –       Modo de configurarlo
           –       Modo de utilizarlo en nuestro código
                    • Cómo consultar sus datos
                    • Cómo modificar sus datos
                    • Cómo operar con él (eventos)
Programación III                        Tema 7b - Swing
Características generales

   • Algunos métodos comunes a componentes:
           –       setVisible( bool )
           –       setEnabled( bool )
           –       getParent() - contenedor donde está
           –       isFocusOwner() - tiene el foco?
                    • transferFocus(), requestFocusInWindow()
           –       setPreferredSize( tam ), ...Minimum, ...Maximum
           –       setFont, setBackground, setForeground
           –       setTooltipText( texto )
           –       setBorder( ... ) - veamos los bordes...

Programación III                         Tema 7b - Swing
Características gen.: Borde

   • Hay varios tipos de borde
           – Generador en BorderFactory
           – Se pueden componer
   BorderFactory.createMatteBorder(
     2, 5, 2, 5, Color.green );
   BorderFactory.createBevelBorder( BevelBorder.RAISED );
   BorderFactory.createEtchedBorder();
   BorderFactory.createLineBorder( Color.red );
   BorderFactory.createLoweredBevelBorder();
   BorderFactory.createRaisedBevelBorder();
   BorderFactory.createCompoundBorder(
     BorderFactory.createTitledBorder("N. panel"),
     BorderFactory.createEmptyBorder(5,5,5,5) );

Programación III                 Tema 7b - Swing
JButton

   • Puede mostrar texto y/o imagen
   • Algunos métodos:
           – setMnemonic( KeyEvent.VK_M )
           – setActionCommand( texto ) - para el listener
                   • getActionCommand() (en el evento)
           – setDefaultButton( b ) (en el contenedor raíz)
           – doClick() (click programático)
   • Iconos configurables para estados:
           – desactivado, pulsado, rollover
   • ActionListener
Programación III                       Tema 7b - Swing
JCheckBox / JRadioButton

   • JCheckBox
           – Como un botón pero con estado
             (activado o no)
                   • setSelected( bool )
                   • getSelected()
           – ItemListener - cambio de estado
   • JRadioButton
           – Se agrupan en un ButtonGroup
                   • bg.add( rb )
           – Sólo uno está activo
           – ActionListener - cambio de botón activo
Programación III                           Tema 7b - Swing
JTextArea
           –       JTextArea( texto inicial, cols, filas )
           –       getText() - setText( String )
           –       setEditable(t/f), setTabSize(int), setLineWrap(t/f)
           –       selectAll(), getSelectionStart(), getSelectionEnd()
           –       append( String ), insert( String, pos )
                    • replaceRange( String, pos-ini, pos-fin )
                    • replaceSelection( String )
           – getLineCount()
   • DocumentListener - cambio en el texto


Programación III                           Tema 7b - Swing
Texto con formato/estilo

   • JFormattedTextField
           – Cuadros de texto
           – Estilo fijo (patrones)
   • Dos comps. similares
           – JEditorPane
                   • Muestra texto HTML
                   • También RTF
           – JTextPane
                   • Permite estilos
                   • Integra imágenes
                      – Sin necesidad de formato HTML o RTF
Programación III                          Tema 7b - Swing
JComboBox

   • Dos modos de uso:
           – Sin edición
           – Con edición (línea)
   • Se despliega
           – Al construir se le pasan los datos a elegir
           – Algunos métodos:
                   • setEditable( true/false )
                   • setSelectedIndex( num. elemento ) - ...Item
                   • getSelectedItem() - ...Index()
           – ActionListener - selección (<Enter> en editable)
           – ItemListener - cambio de selección
Programación III                         Tema 7b - Swing
JList

   • Sólo de consulta/selección
           – Presentan elementos para elegir
           – Selección simple o múltiple
           – Algunos métodos:
                   • setLayoutOrientation - una o varias columnas
                   • setSelectionMode - modo de selección
                   • setSelectedItem( ... ) - ...Index - ...Indices
                   • getSelectedIndices() - ...Value() - ...Values()
                   • ensureIndexIsVisible( ... )
                   • isSelectionEmpty(), clearSelection()
           – ListSelectionListener
Programación III                          Tema 7b - Swing
JSpinner

   • Como un combo sin desplegar
   • Modelos de datos por defecto:
           – Lista de valores
           – Rango de números
           – Fechas
   • ChangeListener - cambio de valor




Programación III                Tema 7b - Swing
JTable

   • Componente complejo
           –       muy potente
           –       Filas y columnas
           –       Celdas configurables en visualización y edición
           –       Anchuras de columnas configurables
           –       Selección de celda, rangos o filas/columnas
           –       Permite ordenación, filtrado y búsqueda
           –       Usa un modelo de datos de tabla
   • TableModelListener - cambio de datos

Programación III                       Tema 7b - Swing
Modelos de datos (1)

   • Muchos de los componentes Swing utilizan
     modelos de datos:
           – JComboBox, JList, JSpinner, JTable...
   • Se crea un modelo, por defecto o partiendo
     de una EEDD existente
           – new DefaultListModel()
   • Se puede modificar el modelo si procede
           – setModel( modelo )



Programación III                  Tema 7b - Swing
Modelos de datos (2)

   • Se puede manipular para cambiar los datos
           – modelo.addElement( elemento )
           – modelo.remove( índice )
   • Se pueden crear modelos ad-hoc
     extendiendo y redefiniendo métodos
           – TableModel
                   • getValueAt( fila, columna )
                   • setValueAt( objeto, fila, columna )
                   • isCellEditable( fila, columna )
                   • ...

Programación III                         Tema 7b - Swing
Otros componentes

   • JProgressBar
           – Indica el progreso de alguna tarea
                   • new JProgressBar( min, max )
                   • setValue( val )
                   • setStringPainted( true/false ) - muestra %
                   • setIndeterminate( true/false )
   • JSpinner
           – Entrada de valor numérico
             entre un mínimo y máximo dados
           – ChangeListener - cambio de valor

Programación III                          Tema 7b - Swing
Personalización de comps.

   • La mayor parte de los componentes se
     pueden personalizar para comportarse
     diferente
           – Lo que visualizan - Renderer. Ej:
                   JComboBox cb = new JComboBox( misDatos );
                   ...
                   ComboBoxRenderer renderer = new ComboBoxRenderer();
                   petList.setRenderer(cb);

           – Cómo son editadas - Editor. Ej:
                   table.setDefaultEditor( Integer.class,
                                  new IntegerEditor(0, 100));




Programación III                           Tema 7b - Swing
Menús

   • Java permite menús desplegables
   JMenuBar menuBar = new JMenuBar();
   JMenu menu = new JMenu("A Menu");
     menu.setMnemonic(KeyEvent.VK_A);
     menuBar.add(menu);
   JMenuItem menuItem = new JMenuItem(
       "A text-only menu item", KeyEvent.VK_T);
     menuItem.setAccelerator( KeyStroke.getKeyStroke(
       KeyEvent.VK_1, ActionEvent.ALT_MASK ));
     menu.add(menuItem);
   menuItem = new JMenuItem("Both text and icon",
       new ImageIcon("images/middle.gif"));
     menuItem.setMnemonic(KeyEvent.VK_B);
     menu.add(menuItem);
Programación III            Tema 7b - Swing
Menús (2)
   menuItem = new JMenuItem(
        new ImageIcon("images/middle.gif"));
        menu.add(menuItem);
   menu.addSeparator();
        ButtonGroup group = new ButtonGroup();
        rbMenuItem = new JRadioButtonMenuItem(
              "A radio button menu item" );
              rbMenuItem.setSelected(true);
              group.add(rbMenuItem);
              menu.add(rbMenuItem);
        rbMenuItem = new JRadioButtonMenuItem("Another
         one");
              group.add(rbMenuItem);
              menu.add(rbMenuItem);
   ...
   vent.setJMenuBar(menuBar); 7b - Swing
Programación III                    Tema
Menús (3)

   • Los eventos son ActionEvent
           – Se chequean como los botones
           – ItemEvent si es una opción de checkbox

         menuItem.addActionListener(this);
         ...
         public void actionPerformed(ActionEvent e) {
           if (e.getAction().equals( ... ))
             ...
           else if (e == menuItemXXX)
             ...
         }


Programación III                Tema 7b - Swing
Descripción de
               contenedores
   • Comentamos ahora algunos de los
     contenedores más significativos
           – JScrollPane
                   • Permite scroll sobre un componente
                     más grande que el área disponible
                   • Configurable horizontal / vertical
                   • Vale para texto y para imágenes
                   • Se construye con el componente
                   • Típico en JTextArea, JList, JTree, JTable...

   JScrollPane areaScrollPane = new JScrollPane( textArea );
   areaScrollPane.setVerticalScrollBarPolicy(
      JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Programación III                          Tema 7b - Swing
Combinando varios paneles

   • JSplitPane
           – Panel móvil entre dos
                   • horizontal o vertical
                   • % mínimo o máximo
   • JTabbedPane
           – "n" paneles, uno visible
           – Pestañas para cada uno
   • JToolBar
           – Horizontal o vertical
           – "Draggable"
Programación III                         Tema 7b - Swing
Contenedores de primer
                  nivel
   • JFrame
           – La ventana que conocemos. Proceso adecuado:
                   JFrame frame = new JFrame("ventana"); // Crearla
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                          // Operación a hacer en cierre
                          // Mejor DISPOSE_ON_CLOSE (sólo cierra esta v)
                   frame.getContentPane().add( ... ); // Añadir comp
                      ...
                   frame.pack(); // Ajustar a tamaño adecuado
                          // Alternativa: setSize( ... );
                   frame.setLocationRelativeTo(null);
                          // Posiciona en pantalla (centra)
                   frame.setVisible(true); // Mostrarla
                   ...
                   frame.dispose(); // La finaliza por programa
Programación III                        Tema 7b - Swing
JDialog / JOptionPane

   • Ventana dependiente de un JFrame
           – Si es modal, bloquea el resto de ventanas
           – Hay una utilidad ya creada en Java:
                   JOptionPane.showMessageDialog(
                      framePrincipal,
                      "Fichero guardado.");
           – También eligiendo:
                   Object[]ops = {"Sí","No","Cancelar" };
                   JOptionPane.showOptionDialog( f,
                      "¿Confirmar?", "Borrado",
                      JOptionPane.YES_NO_CANCEL_OPTION,
                      JOptionPane.QUESTION_MESSAGE, null,
                      ops, ops[0]);
Programación III                      Tema 7b - Swing
JOptionPane (2)

   • Hay cuatro métodos principales:
           – showMessageDialog - sólo mensaje
           – showConfirmDialog - mensaje con
             confirmación, usando botones
           – showInputDialog - pide información, texto o
             lista de opciones
           – showOptionDialog - los tres unidos
   • showInternal... - para internalFrames



Programación III               Tema 7b - Swing
Internal Frames

   • Si queremos una sola ventana principal
           – Con el resto de ventanas incluidas en ella
           – Solución: JInternalFrame
                   • Panel principal: JDesktopPane
                       desktop = new JDesktopPane();
                       setContentPane(desktop);
                   • Ventanas subordinadas
                       JInternalFrame v = new JInternalFrame();
                         v.setSize( 200, 150 );
                         v.setLocation( 50, 50 );
                         v.setVisible(true);
                       desktop.add( v );
                       v.setSelected(true);
Programación III                       Tema 7b - Swing
Contenedores con capas

   • Paneles con dimensión Z
           – Información de profundidad
           – Transparencia opcional
   • JLayeredPane - capa inferior
           – Se añaden con un Integer
                   • profundidad (> - al frente)
   panelCapas.add( comp1, new Integer(1));
   panelCapas.add( comp2, new Integer(2));
   ...
   panelCapas.setLayer(comp,prof,posicion); // 2 niveles
   panelCapas.moveToFront( comp );
   panelCapas.moveToBack( comp );
Programación III                         Tema 7b - Swing
Orden de pans.
               contenedores
   • JRootPane - fondo
           – Panel con capas si existe
           – Panel de contenido (el normal de ventanas)
           – Panel cristal (por omisión oculto)
                   • Se ve por encima del resto / transparente
                   • Pero sí intercepta los eventos de ratón si está activado




Programación III                          Tema 7b - Swing
Look & Feel
           – Java permite configurar el L&F
                   • UIManager.setLookAndFeel( nombre clase );
           – Clases de l&F:
                   •   UIManager.getSystemLookAndFeelClassName()
                   •   "javax.swing.plaf.metal.MetalLookAndFeel"
                   •   "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
                   •   "com.sun.java.swing.plaf.motif.MotifLookAndFeel"
                   •   "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
           – También una vez iniciadas las ventanas:
                   • SwingUtilities.updateComponentTreeUI( ventana );
                   • ventana.pack();
           – Se puede tb por línea de comandos
           – Se pueden crear l&f personalizados
Programación III                            Tema 7b - Swing
Ejemplo

   • SwingSet2
           – Incluido en demos de JDK (demos/jfc)
           – Muestra muchas de las posibilidades de Swing
   • SwingSet3 en evolución (Web)
           – Nuevo L&F de Java 10: Nimbus




Programación III                Tema 7b - Swing
Dibujo en Swing: a su
                    manera
   • Swing dibuja los componentes según layout
           – Con layout nulo podemos ponerlos nosotros
                   • setLocation( x, y )
                   • setBounds( new Rectangle( ancho, alto ) )
           – Al ir moviendo el componente Swing lo redibuja
                   • Pueden solaparse (swing dibuja en orden de add)
                      – El add puede hacerse indicando posición
                      – Mejor usar LayeredPane si la profundidad es importante

   • Ejemplo: EjemploJuego.java


Programación III                           Tema 7b - Swing
Dibujo en Swing a nuestra
                  manera (1)
   • Swing hace lo siguiente para "pintar" la
     ventana con todos sus componentes:
           – Llama al método paint(Graphics g)
                   • Este llama al paint(g) de todos sus componentes
           – Cada paint de un componente hace 3 pasos:
                   • paintComponent(g)
                   • paintBorder(g)
                   • paintChildren(g)
           – El método a sobreescribir:
             paintComponent(g)
                   • Debe llamar a super.paintComponent(g)
                      – Esto incluye el pintado del fondo
Programación III                            Tema 7b - Swing
Dibujo en Swing a nuestra
                 manera (2)
   • ¿Cuándo "pinta" Swing?
           – Cuando lo necesita
                   • Al redimensionar la ventana
                   • Al mostrarse/ocultarse componentes
                   • Al cambiar valores de componentes (p ej setLocation)
           – Cuando el programador quiera
                   • Llamando a repaint() - redibuja todo
                   • Llamando a repaint( x,y,ancho,alto ) - redibuja parte
                   • Swing "guarda" la llamada y pinta en cuanto puede
   Ejemplo: PruebaDibujadoSwing
                   (cambio paintComponent(g))
Programación III                         Tema 7b - Swing
Otros aspectos

   • java.awt.Desktop
           –       browse(URI uri) - navegador asociado en el SO
           –       edit(File file) - editor asociado en el SO
           –       mail(URI mailtoURI) - lanza clte email definido
           –       open(File file) - aplicación asociada en el SO
           –       print(File file) - impresión nativa en el SO
   • Área de notificación (System Tray)
           – java.awt.SystemTray - add(TrayIcon)



Programación III                      Tema 7b - Swing
Swing e hilos

   • SwingUtilities.invokeLater( Runnable )
           – "hazlo cuando puedas"
                   public static void main(String[] args) {
                       SwingUtilities.invokeLater( new Runnable() {
                           public void run() {
                               createAndShowGUI();
                           }
                       });
                   }




Programación III                      Tema 7b - Swing

Más contenido relacionado

La actualidad más candente

5.4.2 metodo numerico (hidrologia)
5.4.2 metodo numerico (hidrologia)5.4.2 metodo numerico (hidrologia)
5.4.2 metodo numerico (hidrologia)Pako Nuri
 
tarjetas de video
tarjetas de videotarjetas de video
tarjetas de videoYury Torres
 
Arquitectura del procesador
Arquitectura del procesadorArquitectura del procesador
Arquitectura del procesadorYESENIA CETINA
 
Canales DMA
Canales DMACanales DMA
Canales DMAfalpema
 
Análisis y síntesis de fourier resumen
Análisis y síntesis de fourier resumenAnálisis y síntesis de fourier resumen
Análisis y síntesis de fourier resumenmiguel rodriguez
 
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2
CONCEPTOS Y FUNDAMENTOS   DE LÓGICA DIFUSA 2CONCEPTOS Y FUNDAMENTOS   DE LÓGICA DIFUSA 2
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2ESCOM
 
Arquitectura de el equipo de cómputo
Arquitectura de el equipo de cómputoArquitectura de el equipo de cómputo
Arquitectura de el equipo de cómputomarcelondomontes
 
Jose luisroisic6a 20042015
Jose luisroisic6a 20042015Jose luisroisic6a 20042015
Jose luisroisic6a 20042015JLuis Reyes Olea
 
Identidades trigonometricas fundamentales
Identidades trigonometricas fundamentalesIdentidades trigonometricas fundamentales
Identidades trigonometricas fundamentalesElmerUgartePMP
 
Interrupciones bios y irq
Interrupciones bios y irqInterrupciones bios y irq
Interrupciones bios y irqadolfoahumada94
 
Ejercicios de componentes del ordenador.
Ejercicios de componentes del ordenador.Ejercicios de componentes del ordenador.
Ejercicios de componentes del ordenador.angelagonzalez147
 
Trazadores cúbico spline
Trazadores  cúbico splineTrazadores  cúbico spline
Trazadores cúbico splinemat7731
 

La actualidad más candente (16)

5.4.2 metodo numerico (hidrologia)
5.4.2 metodo numerico (hidrologia)5.4.2 metodo numerico (hidrologia)
5.4.2 metodo numerico (hidrologia)
 
tarjetas de video
tarjetas de videotarjetas de video
tarjetas de video
 
Metodo congruencial mixto en java
Metodo congruencial mixto en javaMetodo congruencial mixto en java
Metodo congruencial mixto en java
 
Arquitectura del procesador
Arquitectura del procesadorArquitectura del procesador
Arquitectura del procesador
 
Canales DMA
Canales DMACanales DMA
Canales DMA
 
Análisis y síntesis de fourier resumen
Análisis y síntesis de fourier resumenAnálisis y síntesis de fourier resumen
Análisis y síntesis de fourier resumen
 
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2
CONCEPTOS Y FUNDAMENTOS   DE LÓGICA DIFUSA 2CONCEPTOS Y FUNDAMENTOS   DE LÓGICA DIFUSA 2
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2
 
Juego Lógico. El lobo, la cabra y la col
Juego Lógico. El lobo, la cabra  y  la colJuego Lógico. El lobo, la cabra  y  la col
Juego Lógico. El lobo, la cabra y la col
 
Algoritmo SJF
Algoritmo SJFAlgoritmo SJF
Algoritmo SJF
 
Arquitectura de el equipo de cómputo
Arquitectura de el equipo de cómputoArquitectura de el equipo de cómputo
Arquitectura de el equipo de cómputo
 
Jose luisroisic6a 20042015
Jose luisroisic6a 20042015Jose luisroisic6a 20042015
Jose luisroisic6a 20042015
 
Identidades trigonometricas fundamentales
Identidades trigonometricas fundamentalesIdentidades trigonometricas fundamentales
Identidades trigonometricas fundamentales
 
Interrupciones bios y irq
Interrupciones bios y irqInterrupciones bios y irq
Interrupciones bios y irq
 
Ejercicios de componentes del ordenador.
Ejercicios de componentes del ordenador.Ejercicios de componentes del ordenador.
Ejercicios de componentes del ordenador.
 
Monografia lobo cabra y col
Monografia lobo cabra y colMonografia lobo cabra y col
Monografia lobo cabra y col
 
Trazadores cúbico spline
Trazadores  cúbico splineTrazadores  cúbico spline
Trazadores cúbico spline
 

Destacado

Destacado (7)

Programacion swing
Programacion swingProgramacion swing
Programacion swing
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
10.Polimorfismo Java
10.Polimorfismo Java10.Polimorfismo Java
10.Polimorfismo Java
 
Confección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGConfección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWING
 
Java
JavaJava
Java
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Principales características de windows
Principales características de windowsPrincipales características de windows
Principales características de windows
 

Similar a Componentes Swing y contenedores

Similar a Componentes Swing y contenedores (20)

Unidad 01 Tema 01 2022 LPI (1891).pdf
Unidad 01 Tema 01 2022 LPI (1891).pdfUnidad 01 Tema 01 2022 LPI (1891).pdf
Unidad 01 Tema 01 2022 LPI (1891).pdf
 
Hibernate - JPA @luce
Hibernate - JPA @luceHibernate - JPA @luce
Hibernate - JPA @luce
 
T5_Vb_Bd
T5_Vb_BdT5_Vb_Bd
T5_Vb_Bd
 
Controles de Interfaz Introduccion.pdf
Controles de Interfaz Introduccion.pdfControles de Interfaz Introduccion.pdf
Controles de Interfaz Introduccion.pdf
 
Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Programación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionProgramación III (Java) - 01 Introduccion
Programación III (Java) - 01 Introduccion
 
Java ME - Fechas y datos
Java ME - Fechas y datosJava ME - Fechas y datos
Java ME - Fechas y datos
 
Curso android studio
Curso android studioCurso android studio
Curso android studio
 
Curso android studio
Curso android studioCurso android studio
Curso android studio
 
Manual de android
Manual de androidManual de android
Manual de android
 
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
 
Look and feel java
Look and feel javaLook and feel java
Look and feel java
 
Cubos ppt
Cubos pptCubos ppt
Cubos ppt
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
Ajax: CSLA-- e integración con BBDD
Ajax: CSLA-- e integración con BBDDAjax: CSLA-- e integración con BBDD
Ajax: CSLA-- e integración con BBDD
 
Pds0 a introducción al matlab
Pds0 a introducción al matlabPds0 a introducción al matlab
Pds0 a introducción al matlab
 
Rubik Cube Timer - Diapositivas presentacion Clases
Rubik Cube Timer - Diapositivas presentacion ClasesRubik Cube Timer - Diapositivas presentacion Clases
Rubik Cube Timer - Diapositivas presentacion Clases
 
Actividades iniciales
Actividades inicialesActividades iniciales
Actividades iniciales
 
PHP_Mysql.pptx
PHP_Mysql.pptxPHP_Mysql.pptx
PHP_Mysql.pptx
 
Etiquetas básicas jsf
Etiquetas básicas jsfEtiquetas básicas jsf
Etiquetas básicas jsf
 

Más de Andoni Eguíluz Morán

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611Andoni Eguíluz Morán
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Andoni Eguíluz Morán
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosAndoni Eguíluz Morán
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512Andoni Eguíluz Morán
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Andoni Eguíluz Morán
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoAndoni Eguíluz Morán
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesAndoni Eguíluz Morán
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Andoni Eguíluz Morán
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaAndoni Eguíluz Morán
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Andoni Eguíluz Morán
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Andoni Eguíluz Morán
 

Más de Andoni Eguíluz Morán (20)

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamos
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativo
 
Uso ético y seguro de las TIC
Uso ético y seguro de las TICUso ético y seguro de las TIC
Uso ético y seguro de las TIC
 
Redes Sociales Educativas
Redes Sociales EducativasRedes Sociales Educativas
Redes Sociales Educativas
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitales
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos Digitales
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativa
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)
 
SGGN 20140605
SGGN 20140605SGGN 20140605
SGGN 20140605
 
Programación III (Java) - 09 Cierre
Programación III (Java) - 09 CierreProgramación III (Java) - 09 Cierre
Programación III (Java) - 09 Cierre
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programación III (Java) - 07 Eventos
Programación III (Java) - 07 EventosProgramación III (Java) - 07 Eventos
Programación III (Java) - 07 Eventos
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7
 

Último

OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 

Último (20)

OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 

Componentes Swing y contenedores

  • 1. 7. Profundizando en Swing Componentes y contenedores de Swing Un vistazo a algunos de los más usados Modelos de datos Look & feel Dibujando en Java Hilo de Swing Programación III Tema 7b - Swing
  • 2. Componentes Swing (1) • Una buena referencia: Java Tutorials • Veamos algunos de los componentes más significativos – Controles básicos Programación III Tema 7b - Swing
  • 3. Componentes Swing (2) • Edición con formato específico Programación III Tema 7b - Swing
  • 4. Componentes Swing (3) • Muestra de información no editable Programación III Tema 7b - Swing
  • 5. Contenedores Swing (1) • Contenedores de primer nivel (top-level) Programación III Tema 7b - Swing
  • 6. Contenedores Swing (2) • Propósito general y específico Programación III Tema 7b - Swing
  • 7. Descripción de componentes • Hacemos un recorrido por algunos de los componentes más útiles de Swing • Usar cada uno requiere consultar la documentación para: – Tipo de uso (¿es lo que necesitamos?) – Modo de construirlo – Modo de configurarlo – Modo de utilizarlo en nuestro código • Cómo consultar sus datos • Cómo modificar sus datos • Cómo operar con él (eventos) Programación III Tema 7b - Swing
  • 8. Características generales • Algunos métodos comunes a componentes: – setVisible( bool ) – setEnabled( bool ) – getParent() - contenedor donde está – isFocusOwner() - tiene el foco? • transferFocus(), requestFocusInWindow() – setPreferredSize( tam ), ...Minimum, ...Maximum – setFont, setBackground, setForeground – setTooltipText( texto ) – setBorder( ... ) - veamos los bordes... Programación III Tema 7b - Swing
  • 9. Características gen.: Borde • Hay varios tipos de borde – Generador en BorderFactory – Se pueden componer BorderFactory.createMatteBorder( 2, 5, 2, 5, Color.green ); BorderFactory.createBevelBorder( BevelBorder.RAISED ); BorderFactory.createEtchedBorder(); BorderFactory.createLineBorder( Color.red ); BorderFactory.createLoweredBevelBorder(); BorderFactory.createRaisedBevelBorder(); BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("N. panel"), BorderFactory.createEmptyBorder(5,5,5,5) ); Programación III Tema 7b - Swing
  • 10. JButton • Puede mostrar texto y/o imagen • Algunos métodos: – setMnemonic( KeyEvent.VK_M ) – setActionCommand( texto ) - para el listener • getActionCommand() (en el evento) – setDefaultButton( b ) (en el contenedor raíz) – doClick() (click programático) • Iconos configurables para estados: – desactivado, pulsado, rollover • ActionListener Programación III Tema 7b - Swing
  • 11. JCheckBox / JRadioButton • JCheckBox – Como un botón pero con estado (activado o no) • setSelected( bool ) • getSelected() – ItemListener - cambio de estado • JRadioButton – Se agrupan en un ButtonGroup • bg.add( rb ) – Sólo uno está activo – ActionListener - cambio de botón activo Programación III Tema 7b - Swing
  • 12. JTextArea – JTextArea( texto inicial, cols, filas ) – getText() - setText( String ) – setEditable(t/f), setTabSize(int), setLineWrap(t/f) – selectAll(), getSelectionStart(), getSelectionEnd() – append( String ), insert( String, pos ) • replaceRange( String, pos-ini, pos-fin ) • replaceSelection( String ) – getLineCount() • DocumentListener - cambio en el texto Programación III Tema 7b - Swing
  • 13. Texto con formato/estilo • JFormattedTextField – Cuadros de texto – Estilo fijo (patrones) • Dos comps. similares – JEditorPane • Muestra texto HTML • También RTF – JTextPane • Permite estilos • Integra imágenes – Sin necesidad de formato HTML o RTF Programación III Tema 7b - Swing
  • 14. JComboBox • Dos modos de uso: – Sin edición – Con edición (línea) • Se despliega – Al construir se le pasan los datos a elegir – Algunos métodos: • setEditable( true/false ) • setSelectedIndex( num. elemento ) - ...Item • getSelectedItem() - ...Index() – ActionListener - selección (<Enter> en editable) – ItemListener - cambio de selección Programación III Tema 7b - Swing
  • 15. JList • Sólo de consulta/selección – Presentan elementos para elegir – Selección simple o múltiple – Algunos métodos: • setLayoutOrientation - una o varias columnas • setSelectionMode - modo de selección • setSelectedItem( ... ) - ...Index - ...Indices • getSelectedIndices() - ...Value() - ...Values() • ensureIndexIsVisible( ... ) • isSelectionEmpty(), clearSelection() – ListSelectionListener Programación III Tema 7b - Swing
  • 16. JSpinner • Como un combo sin desplegar • Modelos de datos por defecto: – Lista de valores – Rango de números – Fechas • ChangeListener - cambio de valor Programación III Tema 7b - Swing
  • 17. JTable • Componente complejo – muy potente – Filas y columnas – Celdas configurables en visualización y edición – Anchuras de columnas configurables – Selección de celda, rangos o filas/columnas – Permite ordenación, filtrado y búsqueda – Usa un modelo de datos de tabla • TableModelListener - cambio de datos Programación III Tema 7b - Swing
  • 18. Modelos de datos (1) • Muchos de los componentes Swing utilizan modelos de datos: – JComboBox, JList, JSpinner, JTable... • Se crea un modelo, por defecto o partiendo de una EEDD existente – new DefaultListModel() • Se puede modificar el modelo si procede – setModel( modelo ) Programación III Tema 7b - Swing
  • 19. Modelos de datos (2) • Se puede manipular para cambiar los datos – modelo.addElement( elemento ) – modelo.remove( índice ) • Se pueden crear modelos ad-hoc extendiendo y redefiniendo métodos – TableModel • getValueAt( fila, columna ) • setValueAt( objeto, fila, columna ) • isCellEditable( fila, columna ) • ... Programación III Tema 7b - Swing
  • 20. Otros componentes • JProgressBar – Indica el progreso de alguna tarea • new JProgressBar( min, max ) • setValue( val ) • setStringPainted( true/false ) - muestra % • setIndeterminate( true/false ) • JSpinner – Entrada de valor numérico entre un mínimo y máximo dados – ChangeListener - cambio de valor Programación III Tema 7b - Swing
  • 21. Personalización de comps. • La mayor parte de los componentes se pueden personalizar para comportarse diferente – Lo que visualizan - Renderer. Ej: JComboBox cb = new JComboBox( misDatos ); ... ComboBoxRenderer renderer = new ComboBoxRenderer(); petList.setRenderer(cb); – Cómo son editadas - Editor. Ej: table.setDefaultEditor( Integer.class, new IntegerEditor(0, 100)); Programación III Tema 7b - Swing
  • 22. Menús • Java permite menús desplegables JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("A Menu"); menu.setMnemonic(KeyEvent.VK_A); menuBar.add(menu); JMenuItem menuItem = new JMenuItem( "A text-only menu item", KeyEvent.VK_T); menuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_1, ActionEvent.ALT_MASK )); menu.add(menuItem); menuItem = new JMenuItem("Both text and icon", new ImageIcon("images/middle.gif")); menuItem.setMnemonic(KeyEvent.VK_B); menu.add(menuItem); Programación III Tema 7b - Swing
  • 23. Menús (2) menuItem = new JMenuItem( new ImageIcon("images/middle.gif")); menu.add(menuItem); menu.addSeparator(); ButtonGroup group = new ButtonGroup(); rbMenuItem = new JRadioButtonMenuItem( "A radio button menu item" ); rbMenuItem.setSelected(true); group.add(rbMenuItem); menu.add(rbMenuItem); rbMenuItem = new JRadioButtonMenuItem("Another one"); group.add(rbMenuItem); menu.add(rbMenuItem); ... vent.setJMenuBar(menuBar); 7b - Swing Programación III Tema
  • 24. Menús (3) • Los eventos son ActionEvent – Se chequean como los botones – ItemEvent si es una opción de checkbox menuItem.addActionListener(this); ... public void actionPerformed(ActionEvent e) { if (e.getAction().equals( ... )) ... else if (e == menuItemXXX) ... } Programación III Tema 7b - Swing
  • 25. Descripción de contenedores • Comentamos ahora algunos de los contenedores más significativos – JScrollPane • Permite scroll sobre un componente más grande que el área disponible • Configurable horizontal / vertical • Vale para texto y para imágenes • Se construye con el componente • Típico en JTextArea, JList, JTree, JTable... JScrollPane areaScrollPane = new JScrollPane( textArea ); areaScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); Programación III Tema 7b - Swing
  • 26. Combinando varios paneles • JSplitPane – Panel móvil entre dos • horizontal o vertical • % mínimo o máximo • JTabbedPane – "n" paneles, uno visible – Pestañas para cada uno • JToolBar – Horizontal o vertical – "Draggable" Programación III Tema 7b - Swing
  • 27. Contenedores de primer nivel • JFrame – La ventana que conocemos. Proceso adecuado: JFrame frame = new JFrame("ventana"); // Crearla frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Operación a hacer en cierre // Mejor DISPOSE_ON_CLOSE (sólo cierra esta v) frame.getContentPane().add( ... ); // Añadir comp ... frame.pack(); // Ajustar a tamaño adecuado // Alternativa: setSize( ... ); frame.setLocationRelativeTo(null); // Posiciona en pantalla (centra) frame.setVisible(true); // Mostrarla ... frame.dispose(); // La finaliza por programa Programación III Tema 7b - Swing
  • 28. JDialog / JOptionPane • Ventana dependiente de un JFrame – Si es modal, bloquea el resto de ventanas – Hay una utilidad ya creada en Java: JOptionPane.showMessageDialog( framePrincipal, "Fichero guardado."); – También eligiendo: Object[]ops = {"Sí","No","Cancelar" }; JOptionPane.showOptionDialog( f, "¿Confirmar?", "Borrado", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, ops, ops[0]); Programación III Tema 7b - Swing
  • 29. JOptionPane (2) • Hay cuatro métodos principales: – showMessageDialog - sólo mensaje – showConfirmDialog - mensaje con confirmación, usando botones – showInputDialog - pide información, texto o lista de opciones – showOptionDialog - los tres unidos • showInternal... - para internalFrames Programación III Tema 7b - Swing
  • 30. Internal Frames • Si queremos una sola ventana principal – Con el resto de ventanas incluidas en ella – Solución: JInternalFrame • Panel principal: JDesktopPane desktop = new JDesktopPane(); setContentPane(desktop); • Ventanas subordinadas JInternalFrame v = new JInternalFrame(); v.setSize( 200, 150 ); v.setLocation( 50, 50 ); v.setVisible(true); desktop.add( v ); v.setSelected(true); Programación III Tema 7b - Swing
  • 31. Contenedores con capas • Paneles con dimensión Z – Información de profundidad – Transparencia opcional • JLayeredPane - capa inferior – Se añaden con un Integer • profundidad (> - al frente) panelCapas.add( comp1, new Integer(1)); panelCapas.add( comp2, new Integer(2)); ... panelCapas.setLayer(comp,prof,posicion); // 2 niveles panelCapas.moveToFront( comp ); panelCapas.moveToBack( comp ); Programación III Tema 7b - Swing
  • 32. Orden de pans. contenedores • JRootPane - fondo – Panel con capas si existe – Panel de contenido (el normal de ventanas) – Panel cristal (por omisión oculto) • Se ve por encima del resto / transparente • Pero sí intercepta los eventos de ratón si está activado Programación III Tema 7b - Swing
  • 33. Look & Feel – Java permite configurar el L&F • UIManager.setLookAndFeel( nombre clase ); – Clases de l&F: • UIManager.getSystemLookAndFeelClassName() • "javax.swing.plaf.metal.MetalLookAndFeel" • "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" • "com.sun.java.swing.plaf.motif.MotifLookAndFeel" • "com.sun.java.swing.plaf.gtk.GTKLookAndFeel" – También una vez iniciadas las ventanas: • SwingUtilities.updateComponentTreeUI( ventana ); • ventana.pack(); – Se puede tb por línea de comandos – Se pueden crear l&f personalizados Programación III Tema 7b - Swing
  • 34. Ejemplo • SwingSet2 – Incluido en demos de JDK (demos/jfc) – Muestra muchas de las posibilidades de Swing • SwingSet3 en evolución (Web) – Nuevo L&F de Java 10: Nimbus Programación III Tema 7b - Swing
  • 35. Dibujo en Swing: a su manera • Swing dibuja los componentes según layout – Con layout nulo podemos ponerlos nosotros • setLocation( x, y ) • setBounds( new Rectangle( ancho, alto ) ) – Al ir moviendo el componente Swing lo redibuja • Pueden solaparse (swing dibuja en orden de add) – El add puede hacerse indicando posición – Mejor usar LayeredPane si la profundidad es importante • Ejemplo: EjemploJuego.java Programación III Tema 7b - Swing
  • 36. Dibujo en Swing a nuestra manera (1) • Swing hace lo siguiente para "pintar" la ventana con todos sus componentes: – Llama al método paint(Graphics g) • Este llama al paint(g) de todos sus componentes – Cada paint de un componente hace 3 pasos: • paintComponent(g) • paintBorder(g) • paintChildren(g) – El método a sobreescribir: paintComponent(g) • Debe llamar a super.paintComponent(g) – Esto incluye el pintado del fondo Programación III Tema 7b - Swing
  • 37. Dibujo en Swing a nuestra manera (2) • ¿Cuándo "pinta" Swing? – Cuando lo necesita • Al redimensionar la ventana • Al mostrarse/ocultarse componentes • Al cambiar valores de componentes (p ej setLocation) – Cuando el programador quiera • Llamando a repaint() - redibuja todo • Llamando a repaint( x,y,ancho,alto ) - redibuja parte • Swing "guarda" la llamada y pinta en cuanto puede Ejemplo: PruebaDibujadoSwing (cambio paintComponent(g)) Programación III Tema 7b - Swing
  • 38. Otros aspectos • java.awt.Desktop – browse(URI uri) - navegador asociado en el SO – edit(File file) - editor asociado en el SO – mail(URI mailtoURI) - lanza clte email definido – open(File file) - aplicación asociada en el SO – print(File file) - impresión nativa en el SO • Área de notificación (System Tray) – java.awt.SystemTray - add(TrayIcon) Programación III Tema 7b - Swing
  • 39. Swing e hilos • SwingUtilities.invokeLater( Runnable ) – "hazlo cuando puedas" public static void main(String[] args) { SwingUtilities.invokeLater( new Runnable() { public void run() { createAndShowGUI(); } }); } Programación III Tema 7b - Swing