SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Linked stack-and-linked-queue
Linked stack-and-linked-queueLinked stack-and-linked-queue
Linked stack-and-linked-queuesoniasharmafdp
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónFacultad de Ciencias y Sistemas
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de GrafosSandra Biondi
 
Recursividad
RecursividadRecursividad
Recursividadbetzy
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 
Presentación inserción directa y binaria
Presentación inserción directa y binariaPresentación inserción directa y binaria
Presentación inserción directa y binariaClaudia Tona Castro
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
Algortimos De Ordenamiento
Algortimos De OrdenamientoAlgortimos De Ordenamiento
Algortimos De OrdenamientoRolf Pinto
 
investigacion topicos avanzados de programacion unidad dos interfaz grafica
investigacion topicos avanzados de programacion unidad dos interfaz graficainvestigacion topicos avanzados de programacion unidad dos interfaz grafica
investigacion topicos avanzados de programacion unidad dos interfaz graficaAnel Sosa
 
Taller de ciclos en PSeInt
Taller de ciclos en PSeIntTaller de ciclos en PSeInt
Taller de ciclos en PSeIntCristian C
 
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
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaWalter Navarrete Pino
 
TIPOS DE ESTRUCTURAS DE PROGRAMACION
TIPOS DE ESTRUCTURAS DE PROGRAMACIONTIPOS DE ESTRUCTURAS DE PROGRAMACION
TIPOS DE ESTRUCTURAS DE PROGRAMACIONjhohamn
 

Was ist angesagt? (20)

Linked stack-and-linked-queue
Linked stack-and-linked-queueLinked stack-and-linked-queue
Linked stack-and-linked-queue
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Recursividad
RecursividadRecursividad
Recursividad
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de Grafos
 
calculadora en c sharp
calculadora en c sharpcalculadora en c sharp
calculadora en c sharp
 
Recursividad
RecursividadRecursividad
Recursividad
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Presentación inserción directa y binaria
Presentación inserción directa y binariaPresentación inserción directa y binaria
Presentación inserción directa y binaria
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Algortimos De Ordenamiento
Algortimos De OrdenamientoAlgortimos De Ordenamiento
Algortimos De Ordenamiento
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
investigacion topicos avanzados de programacion unidad dos interfaz grafica
investigacion topicos avanzados de programacion unidad dos interfaz graficainvestigacion topicos avanzados de programacion unidad dos interfaz grafica
investigacion topicos avanzados de programacion unidad dos interfaz grafica
 
Grafos
GrafosGrafos
Grafos
 
Taller de ciclos en PSeInt
Taller de ciclos en PSeIntTaller de ciclos en PSeInt
Taller de ciclos en PSeInt
 
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
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busqueda
 
TIPOS DE ESTRUCTURAS DE PROGRAMACION
TIPOS DE ESTRUCTURAS DE PROGRAMACIONTIPOS DE ESTRUCTURAS DE PROGRAMACION
TIPOS DE ESTRUCTURAS DE PROGRAMACION
 
Guia estructuras condicionales
Guia estructuras condicionalesGuia estructuras condicionales
Guia estructuras condicionales
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie Componentes Swing y contenedores

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...GIANCARLOORDINOLAORD
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejormrcrmnrojasgarcia
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdfGabrieldeJesusLopezG
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 

Kürzlich hochgeladen (20)

SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejor
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
El Bullying.
El Bullying.El Bullying.
El Bullying.
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 

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