La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a Java 2D y LG3D

Presentaciones similares


Presentación del tema: "Introducción a Java 2D y LG3D"— Transcripción de la presentación:

1 Introducción a Java 2D y LG3D
Informática Gráfica Introducción a Java 2D y LG3D Carlos de Tapia Miguel del Corral Aníbal Chehayeb Morán

2 Índice de Contenidos Java 2D Project Looking Glass (LG3D)
La clase JPanel Contexto gráfico Eventos de ratón Eventos de teclado Referencias Project Looking Glass (LG3D) Características API del lado del Cliente Ejemplo Demostración

3 Java 2D La clase JComponent posee un método denominado paintComponent(), responsable de pintar en pantalla el componente en cuestión. protected void paintComponent(Graphics g) Para crear gráficos 2D se emplea la clase JPanel, subclase de JComponent, redefiniendo de manera adecuada el método paintComponent().

4 Java 2D Esquema: Primero se debe invocar el método paintComponent() de la superclase. public class Lienzo extends JPanel { protected void paintComponent(Graphics g) { super.paintComponent(g); // ... }

5 Java 2D Ejemplo1.java: protected void paintComponent(Graphics g) {
super.paintComponent(g); int width = (int) getSize().getWidth(); int height = (int) getSize().getHeight(); g.setColor(Color.ORANGE); g.fillRect(0,0,width,height); }

6 Java 2D El contexto gráfico
La clase Graphics de java.awt proporciona las primitivas necesarias para pintar diferentes tipos de elementos (rectángulos, óvalos, cadenas, etc.) sobre el lienzo. drawLine(), drawRect(), fillRect(), drawOval(), fillOval(), drawString() … Además, mantiene información como el color y la fuente empleados get/setColor(), get/setFont()

7 Java 2D Eventos de ratón La clase Component (del paquete java.awt) proporciona dos métodos que permiten añadir un oyente para capturar los eventos generados por el ratón, incluyendo los eventos de movimiento. void addMouseListener(MouseListener l) void addMouseMotionListener(MouseMotionListener l)

8 Java 2D La interfaz MouseListener
void mouseClicked(MouseEvent e) void mouseEntered(MouseEvent e) void mouseExited(MouseEvent e) void mousePressed(MouseEvent e) void mouseReleased(MouseEvent e) La clase MouseAdapter proporciona una implementación por defecto (esto es, que no hace nada) de todas las operaciones de la interfaz MouseListener.

9 Java 2D La interfaz MouseMotionListener
Como su nombre indica, nos permite capturar aquellos eventos del ratón relacionados con el movimiento del mismo. void mouseDragged(MouseEvent e) void mouseMoved(MouseEvent e) De la misma forma, la clase MouseMotionAdapter proporciona una implementación por defecto de todas las operaciones de la interfaz MouseMotionListener.

10 Java 2D La clase MouseEvent
Proporciona información acerca del evento de ratón que se ha producido. Algunos de sus métodos más usados son: int getX() int getY() Point getPoint() Object getSource(): método heredado de EventObject int getButton(): devuelve alguna se las siguientes constantes: NOBUTTON, BUTTON1, BUTTON2 ó BUTTON3

11 Java 2D Ejemplo public Lienzo() { super();
addMouseListener( new MyMouseListener() ); } class MyMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); // ... }

12 Java 2D Ejemplo2.java protected void paintComponent(Graphics g) { …
g.setColor( new Color(0x00,0x00,0x00) ); g.setFont( new Font("Arial",Font.ITALIC,18) ); g.drawString("Haz clic aquí",50,50); } class MyMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent event) { System.out.println("coordenada x: " + event.getX() + ", " + "coordenada y: " + event.getY() ); }

13 Java 2D Ejemplo2.java

14 Java 2D Eventos de teclado
Al igual que con los eventos de ratón, la clase Component proporciona el método addKeyListener() para añadir un oyente que nos permita capturar los eventos de teclado. void addKeyListener(KeyListener l)

15 Java 2D La interfaz KeyListener
void keyPressed(KeyEvent e) void keyReleased(KeyEvent e) void keyTyped(KeyEvent e) KeyAdapter proporciona una implementación por defecto de todas las operaciones de la interfaz KeyListener.

16 Java 2D Referencias Java 2D API Documentation
J2 SE 1.5 API Specification 2D Graphics Tutorial Java 2D API FAQ Java 2D API Sample Programs

17 Project Looking Glass Plataforma abierta de Sun Microsystems para explorar interfaces de usuario 3D

18 Project Looking Glass Major Scene Manager Components

19 Project Looking Glass Características Arquitectura Cliente/Servidor
Grafo de escena C/S permite a varios procesos compartir el mismo universo 3D. Capa de Abstracción de Integración de Aplicaciones Foundation Window System module (FWS): integración con el sistema de ventanas subyacente (AWT, X11). Native Window representation module: capa de abstracción para las aplicaciones. Soporte de aplicaciones 2D

20 Project Looking Glass API del lado del cliente Java2 SE + Java 3D
LG3D API: distinguimos dos niveles: Clases basadas en el Grado de Escena de Java 3D. Clases especializadas de LG3D. Aplicación

21 Project Looking Glass Ejemplo 1
Sencilla aplicación consistente en representar una caja (box) en pantalla. Paso 1: Creación del contenedor principal de la aplicación (instancia de la clase Frame3D perteneciente al paquete org.jdesktop.lg3d.wg) Frame3D frame3d = new Frame3D();

22 Project Looking Glass Ejemplo 1 Paso 2:
Creación de una caja (instancia de la clase Box del paquete org.jdesktop.lg3d.utils.shape) de 8cm x 6cm x 4cm. SimpleAppearance app = new SimpleAppearance( 0.6f, 0.8f, 0.6f ); Box box = new Box(0.04f, 0.03f, 0.02f, app);

23 Project Looking Glass Ejemplo 1 Paso 3:
Se añade la caja a un contenedor (instancia de la clase Component3D) y éste se añade, a su vez, al frame de la aplicación. Component3D comp = new Component3D(); comp.addChild(box); frame3d.addChild(comp);

24 Project Looking Glass Ejemplo 1 Paso 4: Inicialización del frame
frame3d.setPreferredSize( new Vector3f(0.08f, 0.06f, 0.04f) ); frame3d.changeEnabled(true); frame3d.changeVisible(true);

25 Project Looking Glass Ejemplo 1:
Fichero Tutorial1.java (constructor de la clase) public Tutorial1() { Frame3D frame3d = new Frame3D(); SimpleAppearance app = new SimpleAppearance(0.6f, 0.8f, 0.6f); Box box = new Box(0.04f, 0.03f, 0.02f, app); Component3D comp = new Component3D(); comp.addChild(box); frame3d.addChild(comp); frame3d.setPreferredSize( new Vector3f(0.08f, 0.06f, 0.04f) ); frame3d.changeEnabled(true); frame3d.changeVisible(true); }

26 Project Looking Glass Ejemplo 1 Paso 5: Paso 6:
Para la compilación de las fuentes es necesario incluir en el CLASSPATH el fichero lg3d-core.jar. javac -cp "$LG3DHOME/lib/lg3d-core.jar" Tutorial1.java Paso 6: Crear el .jar con nuestra aplicación. Para ello, se debe incluir: las fuentes, el fichero manifest, el fichero de configuración y los recursos (imágenes, etc.).

27 Project Looking Glass Ejemplo 1:
Fichero de configuración (Tutorial1.lgcfg) <?xml version="1.0" encoding="UTF-8"?> <java version="1.5.0" class="java.beans.XMLDecoder"> <object class="org.jdesktop.lg3d.scenemanager.config.ApplicationDescription"> <void property="exec"> <string>java Tutorial1</string> </void> <void property="iconFilename"> <string>tutorial1.png</string> <void property="name"> <string>Tutorial 1</string> <void property="classpathJars"> <string>Tutorial1.jar</string> </object> </java>

28 Project Looking Glass Ejemplo 1 Fichero manifest (Tutorial1.MF)
Main-Class: Tutorial1 Config-File: Tutorial1.lgcfg (línea en blanco) Creación del .jar jar cmvf Tutorial1.MF Tutorial1.jar Tutorial1.class Tutorial1.lgcfg tutorial1.png Copiar el fichero Tutorial1.jar en el subdirectorio $LG3DHOME/ext/app

29 Project Looking Glass Ejemplo 1 Paso 7: ejecución de LG3D

30 Project Looking Glass Referencias (I)
Project Looking Glass - A Comprehensive Overview of the Technology Getting Started with the Project Looking Glass Developer’s Release Project Looking Glass Developer’s Guide Project Looking Glass API (pre-Alpha) Project Looking Glass Demo Applications

31 Project Looking Glass Referencias (y II)
Project Looking Glass Application Tutorial 1 - An introduction to the lg3d framework Project Looking Glass Application Tutorial 2 – Simple manipulations and user interactions Project Looking Glass Application Tutorial 3 – Complex manipulations and user interaction java.net Forums – Project Looking Glass 3D

32 Introducción a Java 2D y LG3D
¿preguntas?


Descargar ppt "Introducción a Java 2D y LG3D"

Presentaciones similares


Anuncios Google