Estudiante Universidad de Cartagena Qu es la Interfaz Grfica de Usuario? Una interfaz grfica de usuario (GUI) es una interfaz de usuario en la que se hace uso de un entorno grfico. Es decir, permite la interaccin del usuario con el ordenador mediante la utilizacin de imgenes, objetos pictricos (ventanas, iconos, botones, etctera),, y a travs de ellos el usuario puede interactuar con la aplicacin. adems de texto. GUI es un acrnimo del vocablo ingls Graphical User Interface. JFC (SWING) Java proporciona una biblioteca de clases denominada JFC (Java Foundation Clases clase base de Java). La cual agrupa las siguientes interfaces para la programacin de aplicaciones: AWT (Abstract Window Toolkit kit de herramientas de ventanas abstractas) Conjunto de componentes para diseo de interfaces graficas de usuario. Swing. Conjunto de componentes para diseo de interfaces graficas de usuario, derivados de AWT Java 2D. Ofrece grficos de 2D de alta calidad, texto e imgenes. Entre otras.
AWT vs Swing La diferencia bsica entre la AWT y Swing es que cada componente AWT tiene asociado su propio recurso nativo de ventana, es decir que estos tiene dependencia de la plataforma en donde est instalado la JVM, por usar en su implementacin cdigo nativo, en consecuencia las aplicaciones cuya interfaz grfica se base en la AWT, requerir un mayor consumo recursos de memoria del computador, por esta razn se les atribuyo el calificativo de Pesados. Los componentes Swing a diferencia de los AWT estn escritos en Java, lo que los hace independientes de plataforma e influye en un menor consumo de recursos, razn por la cual a estos componentes se le atribuyo en calificativo de ligeros. Componentes Grficos de Swing ms comunes Etiquetas: se implementan a partir de clase JLabel Botones: se implementan a partir de la clase JButton Cajas de Texto: se implementan a partir de la clase JTextField las de una solo lnea de texto, y a partir de JTextArea las de varias lneas. Casillas de verificacin: son proporcionadas por la clase JCheckBox, o por la clase JCheckBoxMenuItem para uso en mens (JMenu, JPopupMenu). Botones de opcin: proporcionados por la clase JRadioButton, o por la clase JRadioButtonMenuItem para uno de mens (JMenu, JPopupMenu). Listas simples: se implementan a partir de la clase JList. Barras de desplazamiento: proporcionadas por la clases JScrollBar. Tablas: se implementan a partir de la clase JTable.
Componentes Swing Todos los componentes Swing derivan de la clase JComponent (en Swing), que a su vez es subclase de la clase Componet (en AWT), lo que pone en manifiesto de que Swing de deriva de AWT.
Ventanas Las ventanas son elementos encargados de albergar a otros y que, generalmente, se pueden mover libremente por la pantalla. Existen diferentes tipos en base a su uso y caractersticas. En java se conocen como contenedores de alto nivel, estos se implementan por las clases JFrame, JWindow, JDialog y JApplet. Estos estos define un panel denominado panel de raz, se trata de un panel de contenido que permite ubicar, adems de controles otros paneles. Ventanas de Aplicacin (JFrame) Las ventanas de aplicacin son aquellas que contienen a todos los elementos de una aplicacin. Tiene barra de ttulos y botones que permiten su manipulacin, se puede visualizar en cualquier parte del escritorio. En java las ventanas en aplicacin son proporcionadas por la clase JFrame, que es subclase de la clase Frame, clase hija java.awt.Window. Cuando se crea un objeto JFrame se crea automticamente un panel de raz, el cual puede ser obtenido por el mtodo getContentPane(), que retorna un objeto JRootPane (panel del raz). Mtodos importantes de la clase JFrame public JFrame() - Construye una ventana inicialmente invisible. public JFrame( String title) - Construye una ventana inicialmente invisible con el ttulo indicado. public void setTitle( String title) Establece el ttulo de la ventana. public void setSize(int ancho, int alto) Establece el tamao en pxeles de la ventana. public void setDefaultCloseOperation(int operacin) Establece la operacin que se ha de realizar cuando el usuario cierra la ventana. Los valores permitidos vienen determinados por las siguientes constantes: setLocation(int , int) - fija la posicin de la ventana con respecto a Mtodos importantes de la clase JFrame javax.swing.JFrame.EXIT_ON_CLOSE - Finaliza la ejecucin de la aplicacin. javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE - No hace nada. javax.swing.WindowConstants.HIDE_ON_CLOSE - Oculta la ventana (por defecto) javax.swing.WindowConstants.DISPOSE_ON_CLOSE Libera los recursos de la ventana, pero no finaliza la ejecucin del programa. public void setResizable(boolean resizable) Establece si el usuario puede cambiar el tamao de la ventana. Por defecto es true. public void setExtendedState(int state) Establece el estado de la ventana. Puede no funcionar en algunas plataformas. Este mtodo ha de invocarse cuando la ventana sea visible. Los valores permitidos vienen dados por las constantes:
Mtodos importantes de la clase JFrame java.awt.Frame.NORMAL No se encuentra ni minimizada ni maximizada. java.awt.Frame.ICONIFIED Minimizada. java.awt.Frame.MAXIMIZED_BOTH - Maximizada. java.awt.Frame.MAXIMIZED_HORIZ Maximizada horizontalmente. java.awt.Frame.MAXIMIZED_VERT Maximizada verticalmente. public void setVisible(boolean b) Muestra u oculta la ventana. Segn el valor de b. Contenedores o Paneles Los contenedores son componentes utilizados para ubicar otros componentes. Como ya se mencion los contenedores de alto nivel, tiene un panel de raz, los que no son de nivel intermedio, su propsito es simplificar la colocacin de controles, estos son implementados por las clases JPanel, JScrollPane, JSplitPane, JTabbedPane. El ms comn es el JPanel, se utiliza el mtodo add() para aandir controles y otros paneles al objeto JPanel (panel.add(componente); ) . JButton Un botn es un componente en el que el usuario hace clic para desencadenar una accin especfica (genera un evento ActionEvent). Al texto en la cara de un objeto JButton se le llama etiqueta del botn. Tener ms de un objeto JButton con la misma etiqueta hace que los objetos JButton sean ambiguos para el usuario (cada etiqueta de botn debe ser nica). Un objeto JButton puede mostrar objetos Icon, esto proporciona un nivel adicional de interactividad visual. Tambin puede tener un objeto de sustitucin, que es un objeto Icon que aparece cuando el ratn se posiciona sobre el botn; el icono en el botn cambia a medida que el ratn se aleja y se acerca al rea del botn en la pantalla. Mtodos y constructores de clase JButton JButton() JButton(String ttulo) JButton(Icon icono) JButton(String ttulo, Icon icono) Los constructores crean un ejemplar de JButton, lo inicializa para tener el texto/imagen especificado. Mtodos y constructores de clase JButton void setText(String) - selecciona el texto mostrado en el botn. String getText()- obtiene el texto mostrado en el botn. void setIcon(Icon) Selecciona u obtiene la imagen mostrada por el botn cuando no est seleccionado o pulsado. Icon getIcon()- obtiene la imagen mostrada por el botn cuando no est seleccionado o pulsado. void setDisabledIcon(Icon)- Selecciona la imagen mostrada por el botn cuando est desactivado. Si no se especifica una imagen, el aspecto y comportamiento crea una por defecto. Icon getDisabledIcon()- obtiene la imagen mostrada por el botn cuando est desactivado. Si no se especifica una imagen, el aspecto y comportamiento crea una por defecto.
Mtodos y constructores de clase JButton void setPressedIcon(Icon)-Seleccin la imagen mostrada por el botn cuando est pulsado. Icon getPressedIcon()- obtiene la imagen mostrada por el botn cuando est pulsado. o void setSelectedIcon(Icon) o Icon getSelectedIcon() o void o setDisabledSelectedIcon(Icon) o Icon getDisabledSelectedIcon() Selecciona u obtiene la imagen mostrada por el botn cuando est seleccionado. Si no se especifica una imagen de botn desactivado seleccionado, el aspecto y comportamiento crea una manipulando la imagen de seleccionado. Mtodos y constructores de clase JButton o setRolloverEnabled(boolean) o boolean getRolloverEnabled() o void setRolloverIcon(Icon) o Icon getRolloverIcon() o void setRolloverSelectedIcon(Icon) o Icon getRolloverSelectedIcon() Utiliza setRolloverEnabled(true) y setRolloverIcon(Icon) para hacer que el botn muestre el icono especificado cuando el cursor pasa sobre l. Mtodos y constructores de clase JButton void setMnemonic(char)- Selecciona la tecla alternativa para pulsar el botn. char getMnemonic()- obtiene la tecla alternativa para pulsar el botn. void setMargin(Insets)- Selecciona el nmero de pxeles entre el borde del botn y sus contenidos. Insets getMargin()- obtiene el nmero de pxeles entre el borde del botn y sus contenidos. void setFocusPainted(boolean) Selecciona si el botn debera parecer diferente si obtiene el foco. boolean isFocusPainted()- obtiene un boolean que indica si el botn tiene el foco.
JCheckBox y JCheckBoxMenuItem La versin Swing soporta botones checkbox con la clase JCheckBox. Swing tambin soporta checkboxes en mens, utilizando la clase JCheckBoxMenuItem. Como JCheckBoxMenuItem y JcheckBox descienden de AbstractButton, los checkboxes de Swing tienen todas las caractersticas de un botn normal . Los checkboxes son similares a los botones de radio, pero su modelo de seleccin: ninguno, alguno o todos, pueden ser seleccionados. Sin embargo en un grupo de botones de radio, solo puede haber uno seleccionado. Mtodos y Constructores Las clases JCheckBox y JCheckBoxMenuItem tiene las mismas caractersticas de un JButton, pues ambos son subclases de abstractButton. JCheckBox(String) JCheckBox(String,boolean) JCheckBox(Icon) JCheckBox(Icon,boolean) JCheckBox(String,Icon) JCheckBox(String,Icon,boolean) JCheckBox() Mtodos y Constructores Los constructores anteriores crean un ejemplar de JCheckBox. El argumento String especfica el texto, si existe, que el checkbox debera mostrar. De forma similar, el argumento Icon especfica la imagen que debera utilizarse en vez de la imagen por defecto del aspecto y comportamiento. Especificando el argumento booleano como true se inicializa el checkbox como seleccionado. Si el argumento booleano no existe o es false, el checkbox estar inicialmente desactivado. Mtodos y Constructores JCheckBoxMenuItem(String) JCheckBoxMenuItem(String,boolean) JCheckBoxMenuItem(Icon) JCheckBoxMenuItem(String,Icon) JCheckBoxMenuItem(String,Icon, boolean) JCheckBoxMenuItem() Crea un ejemplar de JCheckBoxMenuItem. Los argumentos se interpretan de la misma forma que en los constructores de JCheckBox. JRadioButton y JRadioButtonMenuItem Los Botones de Radio son grupos de botones en los que, por convencin, slo uno de ellos puede estar seleccionado. Swing soporta botones de radio con las clases JRadioButton y ButtonGroup. Para poner un botn de radio en un men, se utiliza la clase JRadioButtonMenuItem. Otras formas de presentar una entre varias opciones son los combo boxes y las listas. Como JRadioButton desciende de AbstractButton, los botones de radio Swing tienen todas las caractersticas de los botones normales. Los mtodos de AbstractButton que ms se utilizan son setMnemonic, addItemListener, setSelected, y isSelected.
JList (Lista Simple) Un lista es un componente derivado de la clase JList que dispone un conjunto de elementos al usuario y que elegir solo uno de ellos. Si la cantidad de elementos sobrepasa los que pueden ser visualizados aparecer automticamente una barra de desplazamiento (JScrollBar) vertical. Por omisin estos elementos son visualizados de forma vertical en una solo columna, con el mtodo setLayoutOrientation(), con el argumento JList.VERTICAL, pero tambin se puede establecer mltiples columnas con las constantes JList.HORIZONTAL_WRAP o JList.VERTICAL_WRAP. JList (Lista Simple) Disear una Lista Una lista es preferible envolverla en un panel de desplazamiento (JScrollPane) jscrollpane1=new JScrollPane(); jlist1=new JList(); Jscrollpane1.setViewportView(jlist1); Iniciar la Lista Los elementos de una lista pueden ser cadenas, imgenes. Etc Primero creamos un vector que contendr los elementos de la lista, y con el mtodo setListData se pasamos ese vector, tambin se puede inicializar la lista pasndole al constructor el vector de elementos. JTable las tablas representa una de las formas ms comunes de mostrar un conjunto de datos relacionados, la cual es distribuida en filas y columnas. Un objeto de este componente es derivado de la clase JTable y el paquete javax.swing.table permite el acceso a los componentes para manipular tablas. Se puede arrastrar el cursor en los lmites de una columna para cambiar su tamao, tambin esta se puede arrastrar hacia una nueva posicin. Adems dependiendo de su configuracin es posible es posible seleccionar y obtener los valores de una fila, columna y celda de una tabla. Un JTable es quizs el componente de swing ms complejo. JTable Tiene varios constructores el ms comn es : JTable( Object matriz[][], String cabecera[]), matriz especifica un arreglo bidimensional, contendr la informacin de la tabla, y cabecera ser un vector para los nombres de la columnas Construir una tabla. Construimos una tabla a partir de una matriz de objetos Object[][] y un vector String que servir de cabecera de las columnas, es decir los ttulos de las mismas. Disear una tabla Iniciar una tabla Los elementos de una tabla pueden ser de tipo Object, String, boolean, Integer, Byte, Short, Long etc. Crear una tabla usando en constructor por defecto, la crea con cero filas y cero columnas Tambin es posible crear una tabla sin datos pero con un numero de filas y columnas predeterminada, usando el constructor JTable(int fila, int columna) Modelos de una tabla Una tabla tiene los siguientes modelos: TableModel: define el modelos de datos de una tabla proporcionado informacin acerca de las y columnas y valores de las celdas. TableColumnModel: modelo para almacenar varias columnas como una coleccin, es decir as: Modelos de una tabla Otra forma de inicializar una tabla es utilizando el modela que este componente implementa por omisin. Esto es su propiedad model que hace referencia a un objetos de a clase DafaultTableModel implementacin estndar de la interfaz TableModel, y derivada de AbstractTableModel, que contiene los datos de la tabla. Referencias Java Swing JFC (ebook en lnea) Programacin en Java 2. serie Schaum Java 2. Interfaces Graficas y aplicaciones para internet. Javier Ceballos