Está en la página 1de 11

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

Diseo de Interfaces de Sistema.


Desarrollo de Interfaces Grficas de Usuario GIU
Ventanas o formularios. JFrame es un Objeto ventana o formulario. Un objeto o programa java puede heredar las caractersticas (propiedades y mtodos) del objeto JFrame y con esto crear una ventana. La instruccin public class Vetana extends JFrame Establece que el objeto Ventana hereda (extiende) al objeto JFrame. El bloque de cdigo funcin Ventana() es una funcin que se llama igual que el objeto Ventana por lo que recibe el nombre de constructor. Esta funcin es la primera que se ejecuta cada vez que se hace la instancia del objeto y es utilizada para inicializar valores que se usaran en el cdigo del objeto. public Example() { setTitle("Ejemplo sencillo de ventana"); setSize(600, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } La instruccin setTitle es una funcin que estable o configura(set) el contenido de la barra de titulo de la ventana. La instruccin setSize(300,200) es una funcin que indica cual es el ancho y el alto de la ventana setLocationRelativeTo(null) es una funcin que indica la posicin de la ventana. setDefaultCloseOperation(EXIT_ON_CLOSE) establece la tarea a ejecutar cuando se cierra la ventana por default. El objeto Ventana tiene que implementar o construir la funcin main para que sea un programa JAVA ejecutable. public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Ventana form = new Ventana(); form.setVisible(true); } }); }

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

El objeto SwingUtilities es instanciado para ejecutar la funcin invokeLater la cual recibe el parmetro de ejecucin de la instancia del Objeto Runnable el cual a su vez ejecutara la funcin run. En la funcin run() se hace la instancia del objeto Ventana mediante la declaracin del objeto form y ejecuta el constructor del objeto adems de heredar al objeto JFrame. La instruccin form.setVisible(true) define que la variable objeto form configure la funcin setVisible a un valor verdadero y por lo tanto que la ventana se vea. El cdigo completo se muestra a continuacin para el programa Ventana.java
package com.andres;

import javax.swing.JFrame; import javax.swing.SwingUtilities; public class Ventana extends JFrame { public Ventana() { setTitle("Ejemplo sencillo de ventana"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Ventana form = new Ventana(); form.setVisible(true); } }); } }

Practica modifica el programa para que te muestre una ventana de 800 puntos de ancho por 400 de alto y con barra de titulo Mi primer formulario tu_nombre y tu_grupo

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

Un ejemplo ms complejo. 2. Actividad Ahora vamos a construir un programa similar al programa anterior, pero en lugar de codificar todas las instrucciones en el constructor, ahora crearemos una funcin llamada initUI que
tendr las instrucciones que se desean inicializar

La instruccin siguiente desarrolla un Objeto Formulario que hereda las caractersticas del objeto JFrame public class Formulario extends JFrame {

La siguiente instruccin implementa al constructor del objeto Formulario y se encargara de ejecutar la funcin initUI() public Formulario() { initUI(); } El siguiente bloque de cdigo es la construccin de la funcin initUI public final void initUI() { JPanel panel = new JPanel(); getContentPane().add(panel); panel.setLayout(null); JButton quitButton = new JButton("Cerrar"); quitButton.setBounds(50, 60, 80, 130); quitButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); panel.add(quitButton); setTitle("Ventana con botn de comando cerrar"); setSize(500, 200); setLocationRelativeTo(null); setDefaultCloseOperation( EXIT_ON_CLOSE); } La instruccin public final void initUI() indica que se crea una funcin cuyo acceso es publico, final indica que es una funcin heredada y que se modifico por lo que es la ultima implementacin.

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

En JAVA existen objetos que pueden contener otros objetos, por ejemplo el objeto JFrame, en el siguiente cdigo se crear un objeto JPanel que tiene la caracterstica de contener objetos en el y en una ventana pueden haber varios objetos JPanel cada uno de ellos conteniendo diferentes objetos como son etiquetas, cuadros de texto, botones etc. La primera instruccin declara una variable panel de tipo JPanel JPanel panel = new JPanel(); La segunda instruccin configura que el contenido de la variable panel se agrega al formulario o ventana. getContentPane().add(panel); La tercera instruccin configura la forma en que se alinean los objetos en el objeto panel, al ser null el valor indica que no hay alineacin. panel.setLayout(null); La instruccion siguiente hace la instancia de un objeto JButton con la variable quitButton y cuyo valor de texto en el botn es Cerrar JButton quitButton = new JButton("Cerrar"); La instruccin siguiente configura al objeto quitButton definiendo valores de posicin 50 para top, 60 para left y tamao de 80 puntos de ancho por 30 puntos de altura. quitButton.setBounds(50, 60, 80, 30); El siguiente cdigo implementa una funcin addActionListener que permite asignar un detector o monitor de acciones sobre el botn quitButton. El monitor o detector de accin configura un objeto ActionListener que a su vez configura un ActionEvent o evento para el botn y que ejecutara la instruccin de terminar el programa es decir System.exit(0) quitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); La siguiente instruccin aade al botn de comando al objeto JPanel panel.add(quitButton); Las siguientes instrucciones configuran al objeto Formulario setTitle("Ventana con botn de comando cerrar"); setSize(500, 200); setLocationRelativeTo(null); setDefaultCloseOperation( EXIT_ON_CLOSE);

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

Como en el primer programa la funcin main implementa

El objeto SwingUtilities es instanciado para ejecutar la funcin invokeLater la cual recibe el parmetro de ejecucin de la instancia del Objeto Runnable el cual a su vez ejecutara la funcin run. En la funcin run() se hace la instancia del objeto Formulario mediante la declaracin del objeto v y ejecuta el constructor del objeto adems de heredar al objeto JFrame. La instruccin v.setVisible(true) define que la variable objeto v configure la funcin setVisible a un valor verdadero y por lo tanto que la ventana se vea.
El siguiente es el cdigo completo del programa Formulario.java package com.andres; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import import import import javax.swing.JButton; javax.swing.JFrame; javax.swing.JPanel; javax.swing.SwingUtilities;

public class Formulario extends JFrame { public Formulario() { initUI(); } public final void initUI() { JPanel panel = new JPanel(); getContentPane().add(panel); panel.setLayout(null); JButton quitButton = new JButton("Cerrar"); quitButton.setBounds(50, 60, 80, 130); quitButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); panel.add(quitButton); setTitle("Ventana con botn de comando cerrar"); setSize(500, 200); setLocationRelativeTo(null); setDefaultCloseOperation( EXIT_ON_CLOSE); } public static void main(String[] args) {

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

SwingUtilities.invokeLater(new Runnable() { public void run() { Formulario v = new Formulario(); v.setVisible(true); } }); } }

Practica. Crea un programa que tenga una ventana cuya barra de titulo sea Segundo Programa tu_nombre tu_grupo , con un tamao de ventana de 800 de ancho y 600 de alto El botn de comando tendr como valor de texto Terminar y tendr un ancho de 300 por un alto de 100 puntos, adems su posicin es de top 150 y left 300

Otro programa Ventana con un men Sencillo llamado VentanaMenu.java 3. Actividad Requisito se necesita una imagen llamada exit.pnp la cual debe guardarse en el directorio Workspace \directorio_del_proyecto\src\com\andres es decir en donde se encuentra el programa java. El programa aade un objeto JMenu y la accin correspondiente para hacer que los tem de mun funcionen. La estructura del programa es similar al programa anterior por lo que solo explicare las instrucciones diferentes o nuevas. La siguiente instruccin hace la instancia del objeto JMenuBar mediante la variable menubar
JMenuBar menubar = new JMenuBar(); La siguiente instruccin hace la instancia de un objeto ImageIcon y asigna la imagen exit.png como un recurso a la variable objeto icon ImageIcon icon = new ImageIcon(getClass().getResource("exit.png")); La siguiente instruccion hace la instancia del objeto Jmenu JMenu file = new JMenu("File"); La siguiente instruccin hace que la letra F sea la letra resaltada en el tem de men para poder seleccionarse con la tecla <alt> + <F> file.setMnemonic(KeyEvent. VK_F);

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

la siguiente instruccin agrega un item a men con el objeto JMenuItem asigna el texto del rotulo y el icono JMenuItem eMenuItem = new JMenuItem("Exit", icon); La siguiente instruccin hace que la letra C sea la letra resaltada en el tem de men para poder seleccionarse con la tecla <alt> + <C> eMenuItem.setMnemonic(KeyEvent. VK_C); La siguiente instruccin asiga un mensaje de ayuda ToolTipText al item de men eMenuItem.setToolTipText("Exit application");

La siguiente instruccin asiga un AcctionListener o detector de acciones al item de menu eMenuItem eMenuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); La siguiente instruccin agrega al item de men file.add(eMenuItem); La siguiete instruccin aade el men file al objeto Barra de men menubar menubar.add(file); La siguiente instruccin agrega a la barra de men menubar a la ventana setJMenuBar(menubar); al men llamado file

El cdigo completo del programa VentanaMenu.java es el siguiente

package com.andres; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import import import import import import javax.swing.ImageIcon; javax.swing.JFrame; javax.swing.JMenu; javax.swing.JMenuBar; javax.swing.JMenuItem; javax.swing.SwingUtilities;

public class VentanaMenu extends JFrame { public VentanaMenu() { initUI();

Jos Andrs Cervantes Castillo


} public final void initUI() {

Modulo Anlisis y Diseo de Sistemas de Informacin

JMenuBar menubar = new JMenuBar(); ImageIcon icon = new ImageIcon(getClass().getResource("exit.png")); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent. VK_F); JMenuItem eMenuItem = new JMenuItem("Exit", icon); eMenuItem.setMnemonic(KeyEvent. VK_C); eMenuItem.setToolTipText("Exit application"); eMenuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); file.add(eMenuItem); menubar.add(file); setJMenuBar(menubar); setTitle("Menu Sencillo"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation( EXIT_ON_CLOSE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { VentanaMenu ven = new VentanaMenu(); ven.setVisible(true); } }); } }

Practica copia el cdigo siguiente y ejectalo para ver como funciona.

Otro programa Ventana con un men Sencillo llamado Example.java 4. Actividad Requisito se necesita una imagen llamada exit.pnp, save.png, open.png y new.png, las cuales deben guardarse en el directorio

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

Workspace \directorio_del_proyecto\src\com\andres es decir en donde se encuentra el programa java.


El cdigo del programa es: Package com.andres; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import javax.swing.SwingUtilities;

public class Example extends JFrame { public Example() { initUI(); } public final void initUI() { JMenuBar menubar = new JMenuBar(); ImageIcon iconNew = new ImageIcon(getClass().getResource("new.png")); ImageIcon iconOpen = new ImageIcon(getClass().getResource("open.png")); ImageIcon iconSave = new ImageIcon(getClass().getResource("save.png")); ImageIcon iconExit = new ImageIcon(getClass().getResource("exit.png")); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); JMenu imp = new JMenu("Import"); imp.setMnemonic(KeyEvent.VK_M); JMenuItem newsf = new JMenuItem("Import newsfeed list..."); JMenuItem bookm = new JMenuItem("Import bookmarks...");

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

JMenuItem mail = new JMenuItem("Import mail..."); imp.add(newsf); imp.add(bookm); imp.add(mail); JMenuItem fileNew = new JMenuItem("New", iconNew); fileNew.setMnemonic(KeyEvent.VK_N); JMenuItem fileOpen = new JMenuItem("Open", iconOpen); fileNew.setMnemonic(KeyEvent.VK_O); JMenuItem fileSave = new JMenuItem("Save", iconSave); fileSave.setMnemonic(KeyEvent.VK_S); JMenuItem fileExit = new JMenuItem("Exit", iconExit); fileExit.setMnemonic(KeyEvent.VK_C); fileExit.setToolTipText("Exit application"); fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); fileExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); file.add(fileNew); file.add(fileOpen); file.add(fileSave); file.addSeparator(); file.add(imp); file.addSeparator(); file.add(fileExit); menubar.add(file); setJMenuBar(menubar); setTitle("Submenu"); setSize(360, 250);

Jos Andrs Cervantes Castillo

Modulo Anlisis y Diseo de Sistemas de Informacin

setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Example ex = new Example(); ex.setVisible(true); } }); } }