SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Centro de procesamiento de datos
Centro de procesamiento de datosCentro de procesamiento de datos
Centro de procesamiento de datosandexgs
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAErika Rodríguez
 
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUP
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUPConceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUP
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUPCristian
 
Taller 3 instalacion de sistemas operativos
Taller 3 instalacion de sistemas operativosTaller 3 instalacion de sistemas operativos
Taller 3 instalacion de sistemas operativosJhon Jairo Diaz
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacionYamil Hernandez Ortega
 
Estrategias de búsqueda
Estrategias de búsquedaEstrategias de búsqueda
Estrategias de búsquedaozkar21
 
Cisco-Protocolos de Enrutamiento
Cisco-Protocolos de Enrutamiento Cisco-Protocolos de Enrutamiento
Cisco-Protocolos de Enrutamiento Gerardo Galindo
 
Tipos de memoria ram.
Tipos de memoria ram.Tipos de memoria ram.
Tipos de memoria ram.NANITA Armero
 
Arquitectura von neumann
Arquitectura von neumannArquitectura von neumann
Arquitectura von neumannfjruiziesalixar
 
Historia de la Memoria RAM y Microprocesadores
Historia de la Memoria RAM y MicroprocesadoresHistoria de la Memoria RAM y Microprocesadores
Historia de la Memoria RAM y MicroprocesadoresKarenxitaBasurto
 
Pasos para ensamblar y desensamblar una computadora
Pasos para ensamblar y desensamblar una computadoraPasos para ensamblar y desensamblar una computadora
Pasos para ensamblar y desensamblar una computadoraJuan Villarreal Zamarripa
 
ZOCALOS DE CONEXION DE RAM
ZOCALOS DE CONEXION DE RAMZOCALOS DE CONEXION DE RAM
ZOCALOS DE CONEXION DE RAMAlanOcampoRojas
 
Interrupciones bios y irq
Interrupciones bios y irqInterrupciones bios y irq
Interrupciones bios y irqadolfoahumada94
 
Etiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadasEtiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadasjennypalcio
 

Tendances (20)

Centro de procesamiento de datos
Centro de procesamiento de datosCentro de procesamiento de datos
Centro de procesamiento de datos
 
Bios
BiosBios
Bios
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMA
 
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUP
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUPConceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUP
Conceptos Básicos del Encendido del CPU, BIOS, CMOS & SETUP
 
Taller 3 instalacion de sistemas operativos
Taller 3 instalacion de sistemas operativosTaller 3 instalacion de sistemas operativos
Taller 3 instalacion de sistemas operativos
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion
 
Estrategias de búsqueda
Estrategias de búsquedaEstrategias de búsqueda
Estrategias de búsqueda
 
Cuadro comparativo RAM vs ROM
Cuadro comparativo RAM vs ROMCuadro comparativo RAM vs ROM
Cuadro comparativo RAM vs ROM
 
Cisco-Protocolos de Enrutamiento
Cisco-Protocolos de Enrutamiento Cisco-Protocolos de Enrutamiento
Cisco-Protocolos de Enrutamiento
 
Bios y UEFI
Bios y UEFIBios y UEFI
Bios y UEFI
 
Tipos de memoria ram.
Tipos de memoria ram.Tipos de memoria ram.
Tipos de memoria ram.
 
Arquitectura von neumann
Arquitectura von neumannArquitectura von neumann
Arquitectura von neumann
 
Tipos De Memoria Ram
Tipos De Memoria RamTipos De Memoria Ram
Tipos De Memoria Ram
 
Historia de la Memoria RAM y Microprocesadores
Historia de la Memoria RAM y MicroprocesadoresHistoria de la Memoria RAM y Microprocesadores
Historia de la Memoria RAM y Microprocesadores
 
Pasos para ensamblar y desensamblar una computadora
Pasos para ensamblar y desensamblar una computadoraPasos para ensamblar y desensamblar una computadora
Pasos para ensamblar y desensamblar una computadora
 
ZOCALOS DE CONEXION DE RAM
ZOCALOS DE CONEXION DE RAMZOCALOS DE CONEXION DE RAM
ZOCALOS DE CONEXION DE RAM
 
Interrupciones bios y irq
Interrupciones bios y irqInterrupciones bios y irq
Interrupciones bios y irq
 
Etiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadasEtiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadas
 
Windows 1
Windows 1Windows 1
Windows 1
 
Qué es el orden de arranque?
Qué es el orden de arranque?Qué es el orden de arranque?
Qué es el orden de arranque?
 

En vedette

En vedette (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
 

Similaire à Programación III (Java) - 07b Swing

Similaire à Programación III (Java) - 07b Swing (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
 

Plus 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
 

Plus 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
 

Dernier

TEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónTEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónVasallo1
 
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxMarlynRocaOnofre
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisPsicClinGlendaBerrez
 
Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14KevinBuenrostro4
 
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxHidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxNathaly122089
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )portafoliodigitalyos
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)portafoliodigitalyos
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptxFESARAUGUSTOFANDIORI
 
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...helmer del pozo cruz
 
Lecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanzaLecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanzaAlejandrino Halire Ccahuana
 
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxTERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxlitaroxselyperezmont
 
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdfEstrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdfDemetrio Ccesa Rayme
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionessubfabian
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfNELLYKATTY
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfNilssaRojas1
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxJunkotantik
 

Dernier (20)

TEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónTEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilización
 
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Sesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdfSesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdf
 
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
 
Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14
 
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxHidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
flujo de materia y energía ecosistemas.
flujo de materia y  energía ecosistemas.flujo de materia y  energía ecosistemas.
flujo de materia y energía ecosistemas.
 
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...
RESOLUCION_VICE_MINISTERIAL-00048-2024-M-EVALUACIÓN EVALAUCION FORMATIVA MINE...
 
Lecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanzaLecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanza
 
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxTERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
 
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdfEstrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
 

Programación III (Java) - 07b Swing

  • 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