SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
GUIs en Java (4)
                Iván Alonso
e-mail: ivan.alonso.gutierrez@gmail.com
Recordatorio de sistemas de interfaces

         AWT - Swing - SWT
AWT (Abstract Windowing Toolkit)




 Utiliza los componentes nativos de cada sistema operativo
 Los controles tienen funcionamientos similares pero
 no idénticos
 Sólo funcionalidades comunes a todos los ss.oo.
Swing


 Programado en Java
 Componentes “ligeros” (no reservan recursos nativos)
 Extensible: proporciona distintos look & feel
 Implementado mediante Modelo-Vista-Controlador
SWT (Standard Widget Toolkit)


 Programado en Java (aunque exige deallocation)
 Componentes “pesados” (llama a los recursos nativos)
 Su implementación es distinta en cada plataforma
 Extensible, aunque más difícil
 No sigue el Modelo-Vista-Controlador
Personalización del Look & Feel
      de las aplicaciones
Comportamiento por defecto en Swing


 import javax.swing.*;

 public class Main {
   public static void main(String[] args) {
       MySimpleGUI gui = new MySimpleGUI();
   }
 }

 class MySimpleGUI extends JFrame {
    public MySimpleGUI() {
       setSize(400, 200);
       setTitle("Ventana de tipo JFrame");
       setVisible(true);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 }
Looks & Feels disponibles
 Sun los proporciona como parte de JRE:
    CrossPlatformLookAndFeel
     Utilizado por defecto
     Conocido como “Metal”

    SystemLookAndFeel
     Nativo del sistema

    Synth
     Básico para extender mediante archivos XML

    Multiplexing
     Para mezclar distintos Look & Feel


 Otros (búsqueda en internet de “Look & Feel Themes”)
      Gratuitos, comerciales, etc.
Aspecto de SystemLookAndFeel

Linux, Solaris (con GTK)                  GTK+

 Linux, Solaris (sin GTK)                  Motif
                                        Windows,
           Windows                     Windows XP,
                                       Windows Vista
           IBM Unix                        IBM *
             HP UX                         HP *
           Macintosh                    Macintosh *
 * Desarrollados por cada fabricante
Definiendo el aspecto a utilizar
import javax.swing.*;

public class Main {
  public static void main(String[] args) {
      String name = UIManager.getCrossPlatformLookAndFeelClassName();
      try {
         UIManager.setLookAndFeel(name);
      }
      catch(Exception e) {
         return;
      }
      MySimpleGUI gui = new MySimpleGUI(name);
  }
}

class MySimpleGUI extends JFrame {
   public MySimpleGUI(String name) {
      setSize(400, 200);
      setTitle("Ventana " + name);
      setVisible(true);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}
Definiendo el aspecto a utilizar (II)
CrossPlatformLookAndFeel
   Linux (Ubuntu)
   Mac OS X
 [...]
         String name = UIManager.getSystemLookAndFeelClassName();
         try {
            UIManager.setLookAndFeel(name);
         }
 [...]




Utilizando
SystemLookAndFeel
Definiendo el aspecto a utilizar (III)
                        Metal
Linux (Ubuntu)          (por defecto)



                  System




Mac OS X
               System (por defecto)
  Metal
Definiendo el aspecto a utilizar (IV)
                          Metal
Windows 7                 (por defecto)



                    System




Es importante notar que no siempre el estilo por defecto será CrossPlatform
(Metal), como hemos visto en Mac OS X, por lo que es recomendable especificar
el look and feel a utilizar
Ejercicio 1 - rápido y sencillo :)
- Escoger uno de los últimos ejercicios realizados en
los anteriores temas
- Cambiar su look & feel y probarlo con CrossPlatform y
System
Ejercicio 2 - más largo :(
Realizaremos una primera versión de un “Hundir la
flota” muy simple

                           Mezclamos varias cosas de
                           las aprendidas durante todos
                           los temas de interfaces

                           Podremos ampliarlo más
                           adelante cuando estudiemos
                           los temas de redes
Ejercicio 2 (Pistas)
Una posible solución con tres objetos: el general que inicie los demás, el modelo de
datos del juego, y el interfaz gráfico (creado mediante el diseñador de NetBeans)

                                           El modelo de datos puede ser una matriz
                                           5x5 cuyos valores sean de una
                                           enumeración (agua, barco, barco hundido,
                                           etc)

                                           Todos los botones pueden utilizar el
                                           mismo listener, que obtenga su name del
                                           evento recibido, y desde allí se llame a un
                                           método de modelo de datos que actualice
                                           la matriz


                                           No hay una única solución
                                           válida, hagámoslo entre todos
Ejercicio 2 (Ampliación)

        Incluir un nuevo tablero inferior para
        nuestra propia zona de juego, con su
        propio tablero en el modelo de datos

        Permitir hacer click sólo cinco veces, que
        serán las localizaciones de nuestros
        barcos. Tras inicializar nuestra zona,
        deshabilitar todos los botones inferiores y
        habilitar e inicializar la zona enemiga para
        comenzar el juego

        Revisar la inicialización de la zona enemiga,
        para asegurarnos de que siempre tengamos
        cinco (y sólo cinco) barcos asignados
Drag & Drop entre
  componentes
Drag & Drop en Swing
 Técnicamente está disponible entre todos los
 componentes gráficos de Swing (JComponent)
        Aunque algunos, lógicamente, requerirán código por nuestra parte

 Funcionan directamente                Necesitan ajustes propios
   JEditorPane                             JList
   JFormattedTextField                     JTable
   JPasswordField                          JTree
   JTextArea
   JTextField
   JTextPane
   JColorChooser
Drag & Drop en Swing (II)

Funciones a utilizar (componentes estándar)
   setDragEnable(boolean) - Para activar el drag & drop (desactivado por
   defecto), disponible en los componentes estándar

Funciones a utilizar (componentes no estándar)
   setDropMode(DropMode) - Para definir el funcionamiento (sólo) en los
   componentes no estándar: JList, JTable y JTree
   setTransferHandler(TransferHandler) - Para indicar el objeto encargado
   de realizar la transferencia de información (sólo necesitamos cambiarlo si la forma de
   cambiar información es distinta a la proporcionada por defecto)

   Y hay que programar el objeto TransferHandler completo
   Ejercicio recomendado:
   http://java.sun.com/docs/books/tutorial/uiswing/dnd/index.html
Ejercicio simple de Drag & Drop
   Crear una aplicación con diversos controles y activar
   el Drag & Drop en todos ellos (setDragEnable)

Básicos:
  JEditorPane
  JFormattedTextField
  JPasswordField
  JTextArea
  JTextField
  JTextPane
Ejercicio complejo de Drag & Drop
 Implementaremos nuestro propio TransferHandler para
 utilizar con JList




La lista debe inicializarse mediante un DefaultListModel:
   DefaultListModel model = new DefaultListModel();
   for(int i = 0; i < data.length; i++) {
       model.addElement(data[i]);
   }
   list.setModel(model);
TransferHandler
Nueva clase
    public class ListTransferHandler extends TransferHandler
Nuestra lista la utilizará mediante:
    list.setTransferHandler(new ListTransferHandler());


boolean canImport(TransferHandler.TransferSupport info)
Para definir qué tipo de información puede aceptar nuestro componente
Transferable createTransferable(JComponent c)
Para convertir la información de nuestro componente a un objeto transferible a
otros componentes
int getSourceActions(JComponent c)
Qué acciones permite el componente (copiar, mover o ambos)
boolean importData(TransferHandler.TransferSupport info)
Qué hacer tras recibir información (Drop)

void exportDone(JComponent c, Transferable data, int action)
Qué hacer tras enviar la información (Drag)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Grupo1
Grupo1Grupo1
Grupo1
 
Presentac..
Presentac..Presentac..
Presentac..
 
Galo ortega
Galo ortegaGalo ortega
Galo ortega
 
Galo ortega
Galo ortegaGalo ortega
Galo ortega
 
1234567890
12345678901234567890
1234567890
 
Administración básica de ubuntu server parte 2
Administración básica de ubuntu server   parte 2Administración básica de ubuntu server   parte 2
Administración básica de ubuntu server parte 2
 
Carro De Compras
Carro De ComprasCarro De Compras
Carro De Compras
 
Patron Memento
Patron MementoPatron Memento
Patron Memento
 
Triggers
TriggersTriggers
Triggers
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
 
Manual basico de_oracle
Manual basico de_oracleManual basico de_oracle
Manual basico de_oracle
 
Eliminar virus autorun
Eliminar virus autorunEliminar virus autorun
Eliminar virus autorun
 
Copia de dany y jeison
Copia de dany y jeisonCopia de dany y jeison
Copia de dany y jeison
 
Dany y jeison
Dany y jeisonDany y jeison
Dany y jeison
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2
 
Entorno grafico de slackware version 13
Entorno grafico de slackware version 13Entorno grafico de slackware version 13
Entorno grafico de slackware version 13
 

Similar a Look and feel java

Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3Milaly
 
Resumen el gran libro de andorid
Resumen el gran libro de andoridResumen el gran libro de andorid
Resumen el gran libro de andoridJilton Delgado
 
PRUEBA OFIMATICA WEB
PRUEBA OFIMATICA WEBPRUEBA OFIMATICA WEB
PRUEBA OFIMATICA WEBYeison11020
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programaciónRafa Perez
 
Spring OSGI , dm server - Leonardo Torres Altez
Spring OSGI , dm server - Leonardo Torres AltezSpring OSGI , dm server - Leonardo Torres Altez
Spring OSGI , dm server - Leonardo Torres Alteza19987225
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMANUEL RAMIREZ
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_Ricardo Garcia
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Omar B.
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_Robert Wolf
 
Simuladores de red
Simuladores de redSimuladores de red
Simuladores de redoscarmanuuel
 

Similar a Look and feel java (20)

Java gui 4
Java gui 4Java gui 4
Java gui 4
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Resumen el gran libro de andorid
Resumen el gran libro de andoridResumen el gran libro de andorid
Resumen el gran libro de andorid
 
PRUEBA OFIMATICA WEB
PRUEBA OFIMATICA WEBPRUEBA OFIMATICA WEB
PRUEBA OFIMATICA WEB
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Guia4 java
Guia4 javaGuia4 java
Guia4 java
 
Spring OSGI , dm server - Leonardo Torres Altez
Spring OSGI , dm server - Leonardo Torres AltezSpring OSGI , dm server - Leonardo Torres Altez
Spring OSGI , dm server - Leonardo Torres Altez
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVA
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_
 
Diapos de topicos
Diapos de topicosDiapos de topicos
Diapos de topicos
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Creación de Procesos en Android
Creación de Procesos en AndroidCreación de Procesos en Android
Creación de Procesos en Android
 
Clase celulares
Clase celularesClase celulares
Clase celulares
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
TUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSETUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSE
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)
 
Clases de Programación Android
Clases de Programación AndroidClases de Programación Android
Clases de Programación Android
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_
 
Simuladores de red
Simuladores de redSimuladores de red
Simuladores de red
 

Último

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 

Último (20)

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 

Look and feel java

  • 1. GUIs en Java (4) Iván Alonso e-mail: ivan.alonso.gutierrez@gmail.com
  • 2. Recordatorio de sistemas de interfaces AWT - Swing - SWT
  • 3. AWT (Abstract Windowing Toolkit) Utiliza los componentes nativos de cada sistema operativo Los controles tienen funcionamientos similares pero no idénticos Sólo funcionalidades comunes a todos los ss.oo.
  • 4. Swing Programado en Java Componentes “ligeros” (no reservan recursos nativos) Extensible: proporciona distintos look & feel Implementado mediante Modelo-Vista-Controlador
  • 5. SWT (Standard Widget Toolkit) Programado en Java (aunque exige deallocation) Componentes “pesados” (llama a los recursos nativos) Su implementación es distinta en cada plataforma Extensible, aunque más difícil No sigue el Modelo-Vista-Controlador
  • 6. Personalización del Look & Feel de las aplicaciones
  • 7. Comportamiento por defecto en Swing import javax.swing.*; public class Main { public static void main(String[] args) { MySimpleGUI gui = new MySimpleGUI(); } } class MySimpleGUI extends JFrame { public MySimpleGUI() { setSize(400, 200); setTitle("Ventana de tipo JFrame"); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
  • 8. Looks & Feels disponibles Sun los proporciona como parte de JRE: CrossPlatformLookAndFeel Utilizado por defecto Conocido como “Metal” SystemLookAndFeel Nativo del sistema Synth Básico para extender mediante archivos XML Multiplexing Para mezclar distintos Look & Feel Otros (búsqueda en internet de “Look & Feel Themes”) Gratuitos, comerciales, etc.
  • 9. Aspecto de SystemLookAndFeel Linux, Solaris (con GTK) GTK+ Linux, Solaris (sin GTK) Motif Windows, Windows Windows XP, Windows Vista IBM Unix IBM * HP UX HP * Macintosh Macintosh * * Desarrollados por cada fabricante
  • 10. Definiendo el aspecto a utilizar import javax.swing.*; public class Main { public static void main(String[] args) { String name = UIManager.getCrossPlatformLookAndFeelClassName(); try { UIManager.setLookAndFeel(name); } catch(Exception e) { return; } MySimpleGUI gui = new MySimpleGUI(name); } } class MySimpleGUI extends JFrame { public MySimpleGUI(String name) { setSize(400, 200); setTitle("Ventana " + name); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
  • 11. Definiendo el aspecto a utilizar (II) CrossPlatformLookAndFeel Linux (Ubuntu) Mac OS X [...] String name = UIManager.getSystemLookAndFeelClassName(); try { UIManager.setLookAndFeel(name); } [...] Utilizando SystemLookAndFeel
  • 12. Definiendo el aspecto a utilizar (III) Metal Linux (Ubuntu) (por defecto) System Mac OS X System (por defecto) Metal
  • 13. Definiendo el aspecto a utilizar (IV) Metal Windows 7 (por defecto) System Es importante notar que no siempre el estilo por defecto será CrossPlatform (Metal), como hemos visto en Mac OS X, por lo que es recomendable especificar el look and feel a utilizar
  • 14. Ejercicio 1 - rápido y sencillo :) - Escoger uno de los últimos ejercicios realizados en los anteriores temas - Cambiar su look & feel y probarlo con CrossPlatform y System
  • 15. Ejercicio 2 - más largo :( Realizaremos una primera versión de un “Hundir la flota” muy simple Mezclamos varias cosas de las aprendidas durante todos los temas de interfaces Podremos ampliarlo más adelante cuando estudiemos los temas de redes
  • 16. Ejercicio 2 (Pistas) Una posible solución con tres objetos: el general que inicie los demás, el modelo de datos del juego, y el interfaz gráfico (creado mediante el diseñador de NetBeans) El modelo de datos puede ser una matriz 5x5 cuyos valores sean de una enumeración (agua, barco, barco hundido, etc) Todos los botones pueden utilizar el mismo listener, que obtenga su name del evento recibido, y desde allí se llame a un método de modelo de datos que actualice la matriz No hay una única solución válida, hagámoslo entre todos
  • 17. Ejercicio 2 (Ampliación) Incluir un nuevo tablero inferior para nuestra propia zona de juego, con su propio tablero en el modelo de datos Permitir hacer click sólo cinco veces, que serán las localizaciones de nuestros barcos. Tras inicializar nuestra zona, deshabilitar todos los botones inferiores y habilitar e inicializar la zona enemiga para comenzar el juego Revisar la inicialización de la zona enemiga, para asegurarnos de que siempre tengamos cinco (y sólo cinco) barcos asignados
  • 18. Drag & Drop entre componentes
  • 19. Drag & Drop en Swing Técnicamente está disponible entre todos los componentes gráficos de Swing (JComponent) Aunque algunos, lógicamente, requerirán código por nuestra parte Funcionan directamente Necesitan ajustes propios JEditorPane JList JFormattedTextField JTable JPasswordField JTree JTextArea JTextField JTextPane JColorChooser
  • 20. Drag & Drop en Swing (II) Funciones a utilizar (componentes estándar) setDragEnable(boolean) - Para activar el drag & drop (desactivado por defecto), disponible en los componentes estándar Funciones a utilizar (componentes no estándar) setDropMode(DropMode) - Para definir el funcionamiento (sólo) en los componentes no estándar: JList, JTable y JTree setTransferHandler(TransferHandler) - Para indicar el objeto encargado de realizar la transferencia de información (sólo necesitamos cambiarlo si la forma de cambiar información es distinta a la proporcionada por defecto) Y hay que programar el objeto TransferHandler completo Ejercicio recomendado: http://java.sun.com/docs/books/tutorial/uiswing/dnd/index.html
  • 21. Ejercicio simple de Drag & Drop Crear una aplicación con diversos controles y activar el Drag & Drop en todos ellos (setDragEnable) Básicos: JEditorPane JFormattedTextField JPasswordField JTextArea JTextField JTextPane
  • 22. Ejercicio complejo de Drag & Drop Implementaremos nuestro propio TransferHandler para utilizar con JList La lista debe inicializarse mediante un DefaultListModel: DefaultListModel model = new DefaultListModel(); for(int i = 0; i < data.length; i++) { model.addElement(data[i]); } list.setModel(model);
  • 23. TransferHandler Nueva clase public class ListTransferHandler extends TransferHandler Nuestra lista la utilizará mediante: list.setTransferHandler(new ListTransferHandler()); boolean canImport(TransferHandler.TransferSupport info) Para definir qué tipo de información puede aceptar nuestro componente Transferable createTransferable(JComponent c) Para convertir la información de nuestro componente a un objeto transferible a otros componentes int getSourceActions(JComponent c) Qué acciones permite el componente (copiar, mover o ambos) boolean importData(TransferHandler.TransferSupport info) Qué hacer tras recibir información (Drop) void exportDone(JComponent c, Transferable data, int action) Qué hacer tras enviar la información (Drag)