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?

Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navisionpabloesp
 
Java servlet life cycle - methods ppt
Java servlet life cycle - methods pptJava servlet life cycle - methods ppt
Java servlet life cycle - methods pptkamal kotecha
 
PHP - PDO Objects
PHP - PDO ObjectsPHP - PDO Objects
PHP - PDO ObjectsAJINKYA N
 
Short notes of oop with java
Short notes of oop with javaShort notes of oop with java
Short notes of oop with javaMohamed Fathy
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesSorey García
 
Class 3 - PHP Functions
Class 3 - PHP FunctionsClass 3 - PHP Functions
Class 3 - PHP FunctionsAhmed Swilam
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Luzan Baral
 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS ArchitectureJacky Lian
 
CUADERNILLO DIGITAL DE NETBEANS
CUADERNILLO DIGITAL DE NETBEANS CUADERNILLO DIGITAL DE NETBEANS
CUADERNILLO DIGITAL DE NETBEANS victorcespedes25
 
Conversion de infija a postfija
Conversion de infija  a postfijaConversion de infija  a postfija
Conversion de infija a postfijascotto4
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 

Was ist angesagt? (20)

Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navision
 
Java Swing
Java SwingJava Swing
Java Swing
 
Hojas de Estilo en Cascada - CSS
Hojas de Estilo en Cascada - CSSHojas de Estilo en Cascada - CSS
Hojas de Estilo en Cascada - CSS
 
Java servlet life cycle - methods ppt
Java servlet life cycle - methods pptJava servlet life cycle - methods ppt
Java servlet life cycle - methods ppt
 
PHP - PDO Objects
PHP - PDO ObjectsPHP - PDO Objects
PHP - PDO Objects
 
Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Short notes of oop with java
Short notes of oop with javaShort notes of oop with java
Short notes of oop with java
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para Dummies
 
Class 3 - PHP Functions
Class 3 - PHP FunctionsClass 3 - PHP Functions
Class 3 - PHP Functions
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
JavaScript
JavaScriptJavaScript
JavaScript
 
1 .java basic
1 .java basic1 .java basic
1 .java basic
 
Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS Architecture
 
CUADERNILLO DIGITAL DE NETBEANS
CUADERNILLO DIGITAL DE NETBEANS CUADERNILLO DIGITAL DE NETBEANS
CUADERNILLO DIGITAL DE NETBEANS
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Conversion de infija a postfija
Conversion de infija  a postfijaConversion de infija  a postfija
Conversion de infija a postfija
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 

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

CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOS
CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOSCALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOS
CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOSdarlingreserved
 
Catálogo general de libros de la Editorial Albatros
Catálogo general de libros de la Editorial AlbatrosCatálogo general de libros de la Editorial Albatros
Catálogo general de libros de la Editorial AlbatrosGustavoCanevaro
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroJosé Luis Palma
 
Descripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraDescripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraJose Sanchez
 
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...JAVIER SOLIS NOYOLA
 
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxTALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxMartaChaparro1
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAlejandrino Halire Ccahuana
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Edith Liccioni
 
Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Gonella
 
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)LizNava123
 
tema5 2eso 2024 Europa entre los siglos XII y XV
tema5 2eso 2024 Europa entre los siglos XII y XVtema5 2eso 2024 Europa entre los siglos XII y XV
tema5 2eso 2024 Europa entre los siglos XII y XVChema R.
 
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdfMagalyDacostaPea
 
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
 
Biografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoBiografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoJosé Luis Palma
 

Kürzlich hochgeladen (20)

CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOS
CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOSCALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOS
CALCULADORA CIENTIFICA - ANALISIS DE ARTEFACTOS
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
Catálogo general de libros de la Editorial Albatros
Catálogo general de libros de la Editorial AlbatrosCatálogo general de libros de la Editorial Albatros
Catálogo general de libros de la Editorial Albatros
 
Mimos _
Mimos                                       _Mimos                                       _
Mimos _
 
Acuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptxAcuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptx
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general Alfaro
 
Descripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraDescripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldadura
 
El Bullying.
El Bullying.El Bullying.
El Bullying.
 
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
 
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxTALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdf
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.
 
Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1
 
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
 
tema5 2eso 2024 Europa entre los siglos XII y XV
tema5 2eso 2024 Europa entre los siglos XII y XVtema5 2eso 2024 Europa entre los siglos XII y XV
tema5 2eso 2024 Europa entre los siglos XII y XV
 
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf
4to-Primaria-prueba-Comunicación-Cuadernillo 2.pdf
 
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
 
Unidad 1 | Metodología de la Investigación
Unidad 1 | Metodología de la InvestigaciónUnidad 1 | Metodología de la Investigación
Unidad 1 | Metodología de la Investigación
 
Unidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIUUnidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIU
 
Biografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoBiografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro Delgado
 

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