1. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
CAPITULO
VII
DISEÑA E IMPLEMENTA APLICACIONES PARA EL TRATAMIENTO DE FIGURAS, IMÁGENES Y TEXTOS EN DOS DIMENSIONES (JAVA 2D) INTERFACE DE USUARIO
La interface de usuario es la parte del programa que permite a éste interactuar con el usuario. Las interfaces de usuario pueden adoptar muchas formas, que van desde la simple línea de comandos hasta las interfaces gráficas que proporcionan las aplicaciones más modernas.
La interface de usuario es el aspecto más importante de cualquier aplicación. Una aplicación sin un interfaz fácil, impide que los usuarios saquen el máximo rendimiento del programa. Java proporciona los elementos básicos para construir decentes interfaces de usuario a través del AWT.
Al nivel más bajo, el sistema operativo transmite información desde el ratón y el teclado como dispositivos de entrada al programa. El AWT fue diseñado pensando en que el programador no tuviese que preocuparse de detalles como controlar el movimiento del ratón o leer el teclado, ni tampoco atender a detalles como la escritura en pantalla. El AWT constituye una librería de clases orientada a objeto para cubrir estos recursos y servicios de bajo nivel.
Debido a que el lenguaje de programación Java es independiente de la plataforma en que se ejecuten sus aplicaciones, el AWT también es independiente de la plataforma en que se ejecute. El AWT proporciona un conjunto de herramientas para la construcción de interfaces gráficas que tienen una apariencia y se comportan de forma semejante en todas las plataformas en que se ejecute. Los elementos de interface proporcionados por el AWT están implementados utilizando toolkits nativos de las plataformas, preservando una apariencia semejante a todas las aplicaciones que se creen para esa plataforma. Este es un punto fuerte del AWT, pero también tiene la desventaja de que una interface gráfica diseñada para una plataforma, puede no visualizarse correctamente en otra diferente.
2. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
7.1. CLASE GRAPHICS 2D java.awt.Graphics2D es una clase que extiende a java.awt.Graphics y tiene atributos de estado que conforman el contexto y que pueden modificarse son los siguientes puntos: Variar la anchura del pincel o líneas. Definir colores o patrones de relleno para las figuras. Trasladar, rotar, reducir o ampliar objetos cuando son generados. Especificar la forma en que se componen las figuras superpuestas Atributos de pincel draw(), drawArc(), drawLine(), drawOval(), drawPolygon(), drawPolyline(), drawRect() drawRoundRect(). Transformaciones Graphics2D proporciona varios métodos que permiten modificar la transformación por defecto en su contexto. Lo más sencillo es llamar a uno de los métodos de transformación de Graphics2D como rotate() scale() shear() translate()
3. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
7.2. FIGURAS GEOMÉTRICAS EN JAVA 2D Con el paquete java.awt.geom proporciona varias clases que definen objetos geométricos simples tales como puntos, líneas, curvas y rectángulos. Rectangle2D Line2D Point2D Ellipse2D Arc2D
Ejemplo import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; import javafx.geometry.Rectangle2D; public class prueba { public void paint(Graphics2D g) { Graphics2D g2 = (Graphics2D) g; Rectangle2D r = new Rectangle2D(50.0f, 50.0f, 110.0f, 200.0f); RoundRectangle2D rr = new RoundRectangle2D.Float(60.0f, 60.0f, 90.0f, 180.0f, 25.0f, 25.0f); Ellipse2D e = new Ellipse2D.Float(100.0f, 80.0f, 10.0f, 10.0f);
4. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
g2.draw((Shape) r); g2.draw(rr); g2.draw(e); } }
7.3. TRATAMIENTO DE TEXTO CON JAVA2D
Obtener fuentes
Dibujar una única línea de texto Una vez creada la fuente, la forma más fácil de dibujar una línea de texto en un Graphics2D es utilizar su método drawString() habiendo establecido previamente la fuente actual en el contexto. Manejo de la clase TextAttribute. La clase TextAttribute sirve para definir atributos de texto que luego se pueden aplicar a toda una cadena del tipo AttributedString, o bien a sólo una porción de ella.
5. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
SINTAXIS: TextAttribute.Atributo
7.4. IMÁGENES CON JAVA2D Cargar una imagen El método usado para cargar una imagen desde una URL o desde un fichero es el método getImage() del paquete java.awt.Toolkit. Para poder usar esta función hay que obtener antes el objeto Toolkit por defecto invocando a la función estática Toolkit.getDefaultToolkit(). Realmente la sentencia getImage() no carga inmediatamente la imagen sino que la mete en una cola asociada al Toolkit por defecto; cuando el Toolkit finaliza la carga vuelve a invocar al repintado del panel. En otras palabras, la función paint() es invocada varias veces hasta que la imagen se acaba de cargar. Cargar una imagen como BufferedImage JPEG pueden cargarse como cualesquiera otras produciendo un objeto de tipo Image, Ciertas operaciones de transformación que requieren un objeto de tipo BufferedImage La imagen JPEG se puede cargar mediante el mencionado códec. Para cargar una imagen es necesario un decodificador. Crear imágenes
6. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
La forma mas sencilla es el metodo createImage() de la clase Toolkit. En la API Java2D ese objeto devuelto puede convertirse sin ningún problema en un objeto BufferedImage con un simple casting (forzado de tipo). Mostrar una imagen Se utilizan métodos drawImage() de las clases Graphics y Graphics2D Cuando se invoca al método drawImage() para generar una imagen, se dibujan todos los datos de la imagen que están disponibles en ese preciso instante y se retorna inmediatamente.
7.5. EL COLOR EN JAVA2D Cómo crear un color La clase java.awt.Color representa un color en el espacio de colores RGB por defecto.
7. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
El parámetro Alfa indica si se quiere o no introducir la transparencia en el color Ejemplos: Color.blue = new Color(0,0,255) Color.green = new Color(0,255,0) Color White = new Color(255,255,255) Color.darkGray =new Color(64,64,64)
8. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
CAPITULO VIII DISEÑA E IMPLEMENTA INTERFACES VISUALES PARA LAS APLICACIONES JAVA.
8.1 CONTENEDORES Como vimos en entradas anteriores, un contenedor es el tapiz donde pintaremos nuestros componentes gráficos, existen contenedores principales, entre estos se encuentran JFrame y JDialog pero también existen otros contendedores incluidos dentro de los mencionados... JFrame – Es la Ventana de aplicación, el contenedor principal JDialog – Una ventana de tipo Ventana de diálogo, tambien puede ser un contenedor principal. JPanel – Permite la creación de paneles independientes donde se almacenan otros componentes. JScrollPane – permite la vinculación de barras de desplazamiento en un contenedor. JSplitPane – permite la creación de un contenedor dividido en 2 secciones. JTabbedPane – Permite la creación de pestañas, cada pestaña representa un contenedor independiente. JDesktopPane – Permite crear ventanas dentro de una ventana principal JToolBar – Permite introducir una Barra de herramientas
8.2 COMPONENTES ATÓMICOS
Los componentes atómicos son los elementos que no pueden almacenar otros objetos o componentes graficos, por ejemplo, un JPanel no es Atómico, ya que en el podemos almacenar JButtons, JTextField entre otros... JLabel – Permite Vincular Etiquetas, tanto de texto como de imagenes JButton – Permite vincular Botones simples. JCheckBox – Son Casilla de verificación, ideal para selección múltiples. JRadioButton – Permite presentar opciones de selección similares a las checkbox, solo que el enfoque de estas es de única selección. JToggleButton – Botón que al oprimirlo se quedará presionado hasta que se ejecute otro evento. JComboBox – Permite mostrar una lista de elementos como un combo de selección. JScrollBar – Permite mostrar una barra de desplazamiento, regularmente usada en Areas de texto o paneles donde el contenido es mayor que el tamaño del componente. JSeparator – Permite separar opciones, es una barra simple. JSlider - Permite vincular un Deslizador en nuestra ventana. JSpinner – permite vincular una caja de texto con botones integrados para seleccionar algún valor. JProgressBar – Establece una barra de progreso.
9. TALLER DE PROGRACION CONCURRENTE
Docente del curso: BACH. ING. RAUL J. POMASONCCO POMACANCHARI
8.3 COMPONENTES DE TEXTO. Son todos aquellos que nos permiten procesar cadenas de texto, sea como entrada o salida de información. JTextField – Permite introducir un campo de texto simple. JFormattedTextField – Permite introducir un campo de texto con formato, (si definimos que solo recibe números no permitirá letras...) JPasswordField – Campo de texto que oculta los caracteres ingresados. JTextArea – Permite vincular un área de texto donde el usuario ingresara información o simplemente para presentar cadenas de texto. JEditorPane –Permite vincular un área de texto con propiedades de formato. JTextPane – Similar al anterior, permitiendo otras opciones de formato, colores, iconos entre otros.
8.4 COMPONENTES DE MENUS. Estos componentes permiten vincular opciones de menú en nuestras ventanas, tipo menú principal, como por ejemplo el conocido Inicio, Archivo, Edición etc.. JMenuBar – Permite vincular una barra de menús. JMenu– Permite vincular botones o enlaces que al ser pulsados despliegan un menú principal. JMenuItem – Botón u opción que se encuentra en un menú. JCheckBoxMenuItem– Elemento del menú como opciones de checkbox. JRadioButtonMenuItem– Elemento del menú como botón de selección. JPopupMenu– Opciones de menú emergentes.
8.5 COMPONENTES COMPLEJOS
Estos son componentes un poco mas avanzados, cumplen con funciones mas enfocadas a procesos especificos y complejos, como por ejemplo obtener gran cantidad de información de una base de datos, trabajo con nodos, colores entre otros. JTable – Permite vincular una tabla de datos con sus respectivas filas y columnas. JTree - Carga un árbol donde se establece cierta jerarquía visual, tipo directorio. JList – Permite cargar una lista de elementos, dependiendo de las propiedades puede tenerse una lista de selección múltiple. JFileChooser – Es un componente que permite la búsqueda y selección de ficheros entre otras. JColorChooser – Componente que permite cargar un panel selector de color JOptionPane – No es algo complejo sino mas un componente independiente que permite mostrar un cuadro de diálogo personalizable. FUENES: http://elvex.ugr.es/decsai/java/pdf/D1-swing.pdf http://jugandoconjava.co/tutoriales/jFrames/soundClip/soundClip.html http://proton.ucting.udg.mx/tutorial/java/Cap4/marco.html