POO3
POO3
POO3
CURSO:
LENGUAJE DE PROGRAMACION VI - JAVAII
ALUMNO:
HERNANDEZ AQUIJE, VICTOR JEANPIER
DOCENTE:
HERRERA VARGAS, YANINE
SEMESTRE:
VI- A NOCHE
Una interface grfica est construida en base a elementos grficos bsicos, los Componentes. Tpicos ejemplos de estos Componentes son los botones, barras de desplazamiento, etiquetas, listas, cajas de seleccin o campos de texto. Los Componentes permiten al usuario interactuar con la aplicacin y proporcionar informacin desde el programa al usuario sobre el estado del programa. En el AWT, todos los Componentes de la interface de usuario son instancias de la clase Component o uno de sus subtipos. Los Componentes no se encuentran aislados, sino agrupados dentro de Contenedores. Los Contenedores contienen y organizan la situacin de los Componentes; adems, los Contenedores son en s mismos Componentes y como tales pueden ser situados dentro de otros Contenedores.
VI A
Tambin contienen el cdigo necesario para el control de eventos, cambiar la forma del cursor o modificar el icono de la aplicacin. En el AWT, todos los Contenedores son instancias de la clase Container o uno de sus subtipos.
La librera SWING
Hay que entender que Swing no es una sustitucin de AWT, simplemente es una extensin de sta, aunque a veces de esa sensacin como en los distintos componentes como botones, paneles, etc. Swing, aparte de tener mayor cantidad de opciones sobre los componentes (como distintas apariencias, control sobre el focus, mayor nmero de campos que modifican su aspecto,...) se diferencian de las anteriores radicalmente en su implementacin. Por ejemplo, cuando en AWT se aada un botn, el compilador generaba cdigo que le peda al S.O. la creacin de un botn en un determinado sitio con unas determinadas propiedades, en Swing, sin embargo, no se le pide al S.O. nada, se dibuja el botn sobre la ventana en la que se desea y punto. Con esto se han eliminado muchos problemas que existan antes con los cdigos de las interfaces grficas, que debido a depender del S.O. para obtener sus componentes grficos, era necesario testar los programas en distintos S.O., pudiendo tener distintos bugs en cada uno de ellos. Con Swing se ha mejorado bastante este aspecto, lo nico que se pide al S.O. es una ventana, una vez dibujada la ventana, se dibujan los botones, listas, scrollbars.... y todo lo que se necesita sobre ella. Evidentemente esta aproximacin gana mucho en lo que a independencia de la plataforma se refiere. Adems, el hecho de que un botn no sea del S.O. sino que sea dibujado por Java ofrece un mayor control sobre su apariencia. Para ejemplos, los ms adecuados y espectaculares son los que proporciona JavaSoft con Swing, bajo la carpeta "demo" que se genera en la instalacin del JDK. Particularmente interesante es la aplicacin que ellos llaman SwingSet2, cuya pantalla inicial consta de una serie de pestaas que corresponden, cada una de ellas, a uno de los aspectos de Swing.
VI A
Paneles en Swing
JPanel
Una vez construido la ventana (frame) se podra pensar en ir aadiendo los componentes que se fuesen necesitando sin ms, pero no es considerado la mejor tcnica de programacin aadir componentes directamente sobre los contenedores pesados como son las ventanas o los applets, que veremos posteriormente. Para ello se utiliza unos contenedores menos pesados que son los paneles. Las ventajas que tiene el empleo de paneles son varias, entre otras la modularidad en el diseo del interfaz ya que cada panel puede tener su propia disposicin de elementos as como su propio diseo gracias a mtodos como paintComponent, como ya se ver. Para aadir un JPanel lo primero que se debe de hacer es obtener uno de los objetos que forman el frame o ventana, el contenedor de paneles, content pane. Para ello se invocar el mtodo getContentPane de la clase JFrame. El objeto que obtenemos es de tipo Container.
A continuacin se invoca el mtodo add del Container obtenido para aadir el panel, pasndole el propio panel al mtodo:
VI A
Principales Metodos
JDesktopPane
Un LayeredPane o panel por capas, es un panel que proporciona una tercera dimensin para el posicionamiento de componentes: el eje Z, o dicho de otra manera, la profundidad. Cuando aadimos un componente a un panel por capas debemos especificar la profundidad que va a tener. Para ello, en un LayeredPane se definen varias capas o profundidades.
VI A
VI A
JScrollPane
Mediante esta clase se crear una herramienta que permite una visin desplazable de otro componente. Un ScrollPane suele utilizarse para mostrar un componente que es muy grande y no puede observarse en su totalidad, o para mostrar un componente cuyo tamao puede variar dinmicamente.
Un ScrollPane solo muestra sus barras de desplazamiento o ScrollBars cuando son necesarias. Es decir, imaginemos que en la aplicacin anterior agrandamos la ventana hasta que la lista swing cabe perfectamente en ella: En este caso, ambas barras de desplazamiento ya no son necesarias. Este comportamiento est controlado por el vigilante de ScrollBar (realmente existen 2 vigilantes, uno por cada barra de desplazamiento). Los vigilantes de ScrollBar pueden establecerse o fijarse a travs de los mtodos setHorizontalScrollBarPolicy y setVerticalScrollBarPolicy. Con ambos mtodos se utilizan los enteros definidos en la interface ScrollPaneConstants que es implementada por JScrollPane. Los posibles valores de estos enteros son:
VI A
Principales Metodos
JTabbedPane
La clase JTabbedPane, permite al usuario tener varios componentes compartiendo el mismo espacio, de manera que puede elegir el componente deseado mediante un clic en una pestaa.
VI A
Principales Metodos
VI A
VI A
Principales Metodos
VI A
VI A
JEditorPane y JTextPane
Java proporciona varios componentes visuales que permiten escribir y tratar un texto. El componente base para este grupo de objetos java es el JEditorPane y su componente principial JText Pane que permite ms parametrizacin del texto que contiene como el color, la fuente o los tamaos de las letras e incluso permite hasta la insercin de iconos basndose en la clase Icon de Java u otro tipo de componentes Java como botones, etiquetas, etc... Sin embargo, estos componentes no tienen mtodos para ir aadiendo poco a poco el texto. Simplemente tienen un mtodo setText() al que se pasa todo el texto de golpe. Para poder trabajar ms cmodamente con estos objetos es preferible obtener el objeto Document asociado al componente, mediante el mtodo getDocument() y trabajar con l ya que este objeto s posee mtodos para ir aadiendo texto poco a poco.
VI A
Etiquetas: JLabel
De todos los componentes de interfaz de usuario que proporciona Java, las etiquetas son, sin lugar a duda, los ms sencillos. Las etiquetas se utilizan para situar fragmentos de texto o imgenes en la pantalla, de manera que su uso ms comn es dar ttulo a otras reas o a otros componentes Swing. Las etiquetas presentan 3 formas de alineamiento: LEFT o izquierda (JLabel.LEFT). CENTER o centrada (JLabel.CENTER). RIGHT o derecho (JLabel.RIGTH). Un ejemplo de la utilizacin de este componente podra ser el siguiente en el que se muestran las distintas construcciones del componente JLabel:
VI A
Principales Metodos
VI A
Metodos Constructores
Principales mtodos
Esta clase hereda todos los mtodos de AbstractButton. Se recomienda consultar sus mtodos en la pgina de documentacin del api de Java.
VI A
VI A
Metodos Constructores
Principales mtodos
Esta clase hereda todos los mtodos de AbstractButton. Se recomienda consultar sus mtodos en la pgina de documentacin del api de Java.
VI A
Principales Metodos
VI A
Los botones swing son, sin lugar a dudas, ms completos que los botones utilizados por AWT. Prueba de ello, es que pueden incluir tanto imgenes como texto, podemos utilizar mnemnicos o teclas alternativas para pulsarles...etc. Los mnemnicos o teclas alternativas se denominan tambin teclas aceleradoras, debido a que se utilizan cuando se quiere hacer clic en un botn sin utilizar el ratn, pulsando simplemente la tecla concreta del teclado, ahorrando con ello tiempo. El aspecto de una serie de botones swing podra ser el siguiente:
Baste como introduccin al tema de eventos este ejemplo en el cual cuando el usuario pulsa un botn se genera un evento, en este caso de tipo action. Como consecuencia de este hecho se ha implementado un oyente para este tipo de eventos, un listener. El tema eventos se tratar ms en profundidad en un tema siguiente. Metodo Constructor
VI A
VI A
Areas de Texto: JTextField y JtextArea Los campos de texto o textfield se utilizan cuando se necesita un rea donde el usuario pueda introducir un fragmento relativamente pequeo de informacin, como el nombre, un identificador, un password,...
Si nos fijamos, el rea que muestra los mensajes, es editable, es decir, el usuario puede situarse en este componente y escribir o borrar su contenido. Tambin se podra hacer que este rea de visualizacin de mensajes sea no editable evitando esta posibilidad.
VI A
VI A
Campos de Contrasea : JpasswordField Swing proporciona la posibilidad de crear campos de texto para introducir passwords o palabras claves mediante la clase JPasswordField. Esta clase es una subclase de JTextField, por lo que todos los mtodos utilizados con los campos de texto podrn ser tambin utilizados con estos campos de texto para password.
Metodo Constructor
VI A
Barras Desplazables : Jslider La clase JSlider proporciona al programa dor la capacidad de elaborar un slider. Un slider permite al usuario elegir un valor (generalmente numrico) comprendido entre un mnimo y un mximo, evitando con ello posibles errores de entrada que se hubieran producido al utilizar otras estructuras, como por ejemplo, un textfield o campo de texto.
Como se puede observar, el slider es simplemente una barra con un indicador desplazable. Pero el slider anterior es demasiado sencillo, ya que nos e sabe la posicin en la que se encuentra a no ser que incorporemos una etiqueta como en el caso anterior, que nos indique qu valor va cogiendo en cada momento.
VI A
es decir, se dibuja una marca cada 8 posiciones empezando desde el inicio. El programador puede fijar solo las marcas mayores, solo las menores o ambas al mismo tiempo. Una vez fijadas las marcas, se debe indicar que han de ser mostradas. Esto se har mediante los mtodos setPaintTicks(true) y setPaintLabels(true). Se han de incluir ambos mtodos, ya que si nicamente incluimos el primero las marcas no sern mostradas. El aspecto de un slider con marcas sera el siguiente:
Tambin es posible que en vez de poner marcas numricas en el deslizador, se quiera que contenga algn tipo diferente de mensaje. Para ello, se tendr que crear una Hashtable (tabla hash) que contenga el valor de cada etiqueta y la posicin donde debe ser colocada. Un ejemplo de un slider con etiquetas sera el siguiente: El aspecto del slider es el mismo que en los casos anteriores, con la diferencia que en vez de indicarnos, cada 10 o 25 posiciones, el lugar donde nos encontramos, se indica el tanto por ciento que se ha recorrido del slider. Este es solo un ejemplo del tipo de mensaje que se puede incluir en el slider. Por ejemplo, supongamos que tenemos una aplicacin multimedia, donde aparece un slider que sirve para controlar el volumen de un reproductor de CD. En este caso, sera aconsejable, establecer etiquetas en el slider que indicaran el grado del volumen (por ejemplo: bajo, normal, alto y muy alto). Adems, se debe resaltar, que las etiquetas pueden ser tanto texto como imgenes, pudiendo combinar ambos.
VI A
Principales Metodos
VI A
En principio este componente se cre para constituir un interfaz ligado a bases de datos a travs del Java Database Connectivity (JDBC, para los amigos), y as evitar la complejidad inherente al manejo de los datos, proporcionando mucha flexibilidad al programador. Evidentemente existen caractersticas que pueden hacerlo muy complejo, desde la obtencin de los datos desde una hoja de clculo o desde bases de datos de diferente naturaleza, sin embargo tambin es posible crear una Jtable relativamente simple si se entiende correctamente el funcionamiento. La JTable controla cmo se presentan los datos, siendo el componente TableModel quien controla los datos en s mismos. Para crear una JTable habr pues que crear un TableModel antes, normalmente. Se puede implementar, para ello, el interfaz TableModel, pero es mucho ms simple heredar de la clase ayuda AbstractTableModel. Por defecto, todas las columnas de la tabla tienen la misma anchura, de modo que la suma de la anchura de las columnas ser igual al tamao de la tabla (por ejemplo, si nuestra tabla tiene 25 pxeles y 5 columnas, cada columna tendr inicialmente y por defecto, una anchura de 5 pxeles (25 pxeles/5 columnas = 5 pxeles por columna)). Pero existen 2 casos en los que la anchura de las columnas de una tabla se va a modificar: 1. Que el usuario cambie el tamao total de la tabla (ocurre, por ejemplo, cuando se redimensiona la ventana que contiene a la tabla). En este caso, la anchura de todas las columnas se modifica para amoldarse al nuevo tamao de al tabla.
VI A
Bien, pues se puede cambiar el comportamiento del redimensionado por defecto en el segundo caso (se modifica la anchura de un sola columna) a travs del mtodo setAutoResizeMode. El argumento de este mtodo debe ser una de estas 3 constantes definidas en JTable: AUTO_RESIZE_SUBSEQUENT_COLUMNS: es el valor por defecto ya explicado anteriormente. Adems de redimensionar la columna que cambia de tamao, ajusta el tamao de todas las columnas que se encuentran a la derecha del punto de arrastre. AUTO_RESIZE_NEXT_COLUMN: ajusta nicamente las columnas inmediatas a la izquierda y derecha del punto de arrastre. AUTO_RESIZE_OFF: ajusta el tamao de la tabla total. En el caso de que queramos que una de nuestras columnas tenga un tamao diferente de las dems, sin necesidad de redimensionarla con el ratn cada vez que se cree la tabla, podemos utilizar el mtodo setPreferredWidth(int). Por defecto, una tabla permite que el usuario seleccione una o varias filas contiguas. Pero, a pesar de ello, se permite al programador que establezca su propio modelo de seleccin de filas. Esto se conseguir a travs del mtodo setSelectionMode pasndole como parmetro una de las siguientes constantes, definida en la interfaz ListSelectionModel:
SINGLE_SELECTION: solo puede ser seleccionada una fila de la tabla. SINGLE_INTERVAL_SELECTION: se pueden seleccionar varias filas de la tabla, siempre y cuando, sean contiguas, es decir, que aparezcan seguidos en la tabla. MULTIPLE_INTERVAL_SELECTION: es el valor por defecto y permite seleccionar cualquier combinacin de filas de la tabla.
VI A
VI A
VI A
FileChooser
Esta clase proporciona un UI para elegir un fichero de una lista. Un selector de ficheros es un componente que podemos situar en cualquier lugar del GUI de nuestro programa. Sin embargo, normalmente los programas los muestran en dilogos modales porque las operaciones con ficheros son sensibles a los cambios dentro del programa. La clase JFileChooser hace sencillo traer un dilogo modal que contiene un selector de ficheros. Los selectores de ficheros se utilizan comnmente para dos propsitos: Para presentar una lista de ficheros que pueden ser abiertos por la aplicacin. Para permitir que el usuario seleccione o introduzca el nombre de un fichero a grabar. El selector de ficheros ni abre ni graba ficheros. Presenta un GUI para elegir un fichero de una lista, nada ms. El programa ser el responsable de hacer algo con el fichero, como abrirlo o grabarlo.
En este caso, cuando el usuario pulsa el botn Open se muestra un JfileChooser para que pueda elegir el fichero a abrir, cuando pulsa el botn Save se mostrar otro JFileChooser con la opcin de guardar el fichero.
VI A
Si el usuario elige un fichero, el cdigo llama a getSelectedFile sobre el selector de ficheros para obtener un ejemplar de File, que representa el fichero elegido. El ejemplo obtiene el nombre del fichero y lo utiliza en un mensaje. Podemos utilizar otros mtodos del objeto File, como getPath o isDirectory, para obtener informacin sobre l. Tambin podemos llamar a otros mtodos como delete y rename para cambiar el fichero de alguna forma. Por supuesto, podramos leer o grabar el fichero utilizando una de las clases lectoras o escritoras proporcionadas por el JDK.
VI A
Principales Metodo
VI A
Un selector de color utiliza un ejemplar de ColorSelectionModel para contener y manejar la seleccin actual. Este dispara un evento "change" si el usuario cambia el color del selector. El programa de ejemplo registra un oyente de "change" con el ColorSelectionModel para poder actualizar el banner de la parte superior de la ventana.
VI A
Principales Metodo
VI A
El componente JToolBar dispone entre sus mtodos de uno, setFloatable(boolean) que permite que la barra de herramientas tenga un comportamiento flotable, es decir que sea movible a otro punto del componente contenedor.
VI A
Arboles: JTree
Con la clase JTree, se puede mostrar un rbol de datos. JTree realmente no contiene datos, simplemente los visualiza. Aqu tienes una imagen de un rbol: Como muestra la figura, JTree muestra los datos verticalmente. Cada fila contiene exactamente un tem de datos (llamado un nodo). Cada rbol tiene un nodo raz (llamado Root en la figura anterior, del que descienden todos los nodos. Los nodos que no pueden tener hijos se llaman nodos leaf (hoja). En la figura anterior, el aspecto-y-comportamiento marca los nodos hojas con un crculo. Los nodos que no sean hojas pueden tener cualquier nmero de hijos, o incluso no tenerlos. En la figura anterior, el aspecto-y-comportamiento marca los nodos que no son hojas con una carpeta. Normalmente el usuario puede expandir y contraer los nodos que no son hojas -- haciendo que sus hijos sea visibles o invisibles -- pulsando sobre l. Por defecto, los nodos que no son hojas empiezan contrados. Cuando se inicializa un rbol, se crea un ejemplar de TreeNode para cada nodo del rbol, incluyendo el raz. Cada nodo que no tenga hijos es una hoja. Para hacer que un nodo sin hijos no sea una hoja, se llama al mtodo setAllowsChildren (true) sobre l.
VI A