Sei sulla pagina 1di 17

Apuntes CPM

Como crear nuevas ventanas (Dilogos)


Pasos a seguir: 1.- Especificar clase para la ventana public class MiVentana extends JDialog { public MiVentana() { } } 2.- Crear la instancia de la ventana MiVentana v = new miVentana(); 3.- Disear el contenido JPanel panel = new JPanel(); v.setLocation(x,y); /* Establece la posicin de la ventana */ Para situar la ventana en el medio mirar las transparencias. 4.- Mostrar la ventana v.show(); v.pack(); v.setModal(bolean); El componente preferredSize establece el tamao inicialmente ptimo de los componentes. El mtodo pack() calcula el tamao por defecto de la ventana en funcin de los componentes. Para cerrar la ventana: dispose(); [ this.dispose(); ] (NOTA: Tambin elimina el objeto). Botn por defecto: Primero (Por ejemplo, Aceptar). Es aquel que su cdigo se puede ejecutar sin hacer clic en el. (Si haces enter en otro sitio se ejecuta). El de cancelacin lo mismo para Esc. No todos los dilogos llevan botn por defecto ni de cancelacin.

Como establecer un botn por defecto: Ej: Botn por defecto: jButton getRootPane().setDefaultButton(jButton); /* En el constructor del dialogo. */

JOptionPane
Esta clase tiene tres mtodos bsicos: showMessageDialog: JOptionPane.showMessageDialog(); Sintaxis: JOptionPane.showMessageDialog(parent,mensaje,titulo,iconos) Saca el mensaje centrado en parent. Si ponemos this te centra en el marco. Ejemplo: JOptionPane.showMessageDialog(this,"Mensaje a sacar","Ttulo",JOptionPane.INFORMATION_MESSAGE);

En este caso en icono hemos usado JOptionPane.INFORMATION_MESSAGE, si usasemos por ejemplo: JOptionPane.ERROR_MESSAGE, obtendramos esto:

Etc, la imagen viene dado por JOptionPane.X .

showInputDialog: JOptionPane.showInputDialog(); Sintaxis: JOptionPane. showInputDialog (parent,mensaje,titulo,iconos) Saca el mensaje centrado en parent. Si ponemos this te centra en el marco. Ejemplo: JOptionPane. showInputDialog (this,"Mensaje a sacar","Ttulo",JOptionPane.INFORMATION_MESSAGE);

showConfirmDialog:

JOptionPane.showConfirmDialog(); Sintaxis: JOptionPane.showConfirmDialog (parent,mensaje,titulo,iconos) Saca el mensaje centrado en parent. Si ponemos this te centra en el marco. Ejemplo: JOptionPane.showConfirmDialog (this,"Mensaje a sacar","Ttulo",JOptionPane.INFORMATION_MESSAGE);

Cada botn devuelve un valor entero segn sea pulsado. Mirar la ayuda para ver que devuelve.

JColorChooser
Uso:

1.- Instancia objeto JColorChooser pillaColor = new JColorChooser(); 2.- Desplegarlo pillaColor.showDialog(parent,titulo,color inicial); En caso de que canceles el dialogo devuelve null. Si aceptas, devuelve un color. Ej: JColorChooser pillaColor = new JColorChooser(); Color miColor = pillaColor.showDialog(this,mensaje,contentPane.getBackground()); If (miColor != null) contentPane.setBackground(miColor);

JFileChooser
Propiedades: dialogTitle multiSelectionEnabled currentDirectory(File) FileFilter

Mtodos: showDialog() showOpenDialog() showSaveDialog() getSelectedFile() -> File (Devuelve un objeto de la clase File) setCurrentDirectory(File)

Clase File: java.io.File Class File { String getName() String getPath() Bolean exists() void delete() } Ej: C:\Tem\Images\Abrir.gif File f = new File(C:\Temp\Images\Abrir.gif); getName() -> Abrir.gif getPath() -> C:\Temp\Images exists() -> true si existe, false en caso contrario

Uso de FileChooser: JFileChooser fc = new JFileChooser(); If (fc.showOpenDialog(this) == JFileChooser.APROVE_OPTION))

Como hacer que se abra en un determinado directorio: File dirInicial = new File(./Imagenes); fc.setCurrentDirectory(dirInicial); El . establece el directorio actual del proyecto. Existen una serie de filtros para JFileChooser para filtrar archivos segn su extensin. Para crear un filtro para JFileChooser ha de crearse una clase que herede de la clase FileFilter. En dicha clase solo se deben implementar dos mtodos: accept() getDescriptionFilter()

Antes veamos unas propiedades de la clase String que nos ser til para el uso y/o creacin de estos filtros.

String
Mtodos interesantes: lastIndexOf(char) toUpperCase() toLowerCase() length() subString(i)

Para empezar veamos como crear un string, dos formas: a) String nombre = Abrir.gif b) String nombre = new String(Abrir.gif) Ejemplo de uso de los mtodos citados anteriormente y explicacin: String.lastIndexOf(char) -> Devuelve la ultima posicin del carcter pasado. Ej: nombre.lastIndexOf(.) -> Devolvera 5 String.subString(i) -> Devuelve el String dado desde la posicin i en adelante. Ej: nombre.subString(6) -> Devolvera gif String.length() -> Devuelve el nmero de caracteres del String.

Ej: nombre.length() -> Devolvera 9 String.toUpperCase() -> Devuelve el String pasado a maysculas. Ej: nombre.toUpperCase() -> Devolvera ABRIR.GIF String.toLowerCase() -> Devuelve el String pasado a minsculas. Ej: nombre.toLowerCase() -> Devolvera abrir.gif

Continuamos con los filtros de JFileChooser, como aadir un filtro: 1) Crear la clase que hereda de FileFilter implementando los dos mtodos que tiene: accept() y getDescriptionFilter() Descripcin de los mtodos y la clase FileFilter: Public abstract class FileFilter { abstract String getDescriptionFilter(); /* Devuelve la descripcin del Filtro. Ej: Todos los archivos de texto */ abstract bolean accept(File f); /* Se le pasa una estructura de directorios y va mirando todos los archivos del directorio comprobando si la extensin se ajusta al filtro (es vlida), Si es vlida la muestra, sino no. */ } Cdigo de los mtodos: class FiltroImagenes extendes FileFilter { String getDescriptionFilter() { return Imgenes (jpg,gif); } boolean accept (File f) { /* PSEUDOCDIGO */ if (f es directorio) return true; if (extension de f es .jpg o .gif) return true; return false; /* De lo contrario no muestres nada. */ } Cdigo real en las transparencias de JFileChooser.

2) Crear instancia del filtro FiltroImagenes miFiltro = new FiltroImagenes(); 3) Asociar el filtro al cuadro de dialogo. Dos formas: a) jFileChooser1.setFileFilter(miFiltro); b) jFileChooser1.addChoosableFileFilter(miFiltro);

Las etiquetas no tienen mnemonic. Son un caso especial. Para cambiar un mnemonic: button.setMnemonic(); Para obtener un mnemonic: button.getMnemonic(); En etiquetas se usa: displayedMnemonic() jLabel.displayedMnemonic(); jLabel.labelFor(); La propiedad Accelerator en los jMenuItem es para aadir Shortchuts.

Un foco se solicita con: requestFocus. Ej: jTextField.requestFocus(); Para negar el derecho a foco a un elemento: setRequestFocusEnabled(bolean); Ej: jTextField.setRequestFocusEnabled(false); An estando habilitado, no dejar que ocupe el foco. Para dar prioridad de foco, es decir, que de un foco salte a otro que tu quieras: setNextFocussableComponent(componente); Ej: jButton.setNextFocusableComponent(jTextField); Eventos de focos: FocusLost (Pierde foco) FocusGained (Gana foco)

Imgenes: Para crear una imagen de icono: ImageIcon miImagen = new ImageIcon(Abrir.gif); Proyecto: C:\Temp\ C:\Temp\Abrir.gif

Layouts
Los layouts son gestores de distribucin. Solo afectan a contenedores. Los podemos definir como objetos que se encargan de controlar la posicin y dimensiones de los componentes dentro de los contenedores. Qu layouts hay? BorderLayout FlowLayout GridLayout BoxLayout GridBagLayout CardLayout

BorderLayout: Es el layout por defecto de los marcos (JFrame). Divide al contenedor en 5 partes.

Propiedades: vgap -> Separacin vertical entre los componentes. hgap -> Separacin horizontal entre los componentes.

FlowLayout: Es el layout por defecto de los JPanel. Propiedades: vgap -> Separacin vertical entre los componentes. hgap -> Separacin horizontal entre los componentes. Alignment -> Donde se debe alinear el componente.

Tablas
JTable tabla = new JTable(contenido,columnas) Contenido: String[][] = { { Ana, Perez, 10 } , { Pedro, Diaz, 11 } } Columnas: String[] = { Nombre, Apellido, Edad } Metodos: getEditingColumn() -> Columna donde ests getEditingRow() -> Fila donde ests.

getValueat() -> Valor de la celda rowSelectionAllowed , columnSelectionAllowed y cellSelectionAllowed -> Permite coger datos

HTML
Cuando empiezas una Web, el principio del documento contiene la siguiente marca: <HTML> Para finalizar el documento, al final, se pone: </HTML> Dentro hay dos partes fijas, cabecera: HEAD, y el cuerpo: BODY. Cualquier marca en HTML se denota as: <MARCA>, para finalizarla </MARCA>. Los parmetros as: <MARCA parmetro=valor parmetro=valor> </MARCA> Ejemplo de documento vaco: <HTML> <HEAD> <BODY> </BODY> </HEAD> </HTML> Como insertar un ttulo: Marca TITLE. <TITLE>Ttulo de la pgina</TITLE>

Ejemplo: <HTML> <HEAD> <TITLE>Ttulo de la pgina</TITLE> </HEAD> <BODY> Aqu escribo el texto de la pgina. </BODY> </HTML> Marcas: Resaltar palabra en negrita: <B> Resaltar palabra en cursiva: <K> Salto de lnea: <BR> (No necesita cierre) Prrafo (conseguir ms espacio entre lneas): <P> Ttulos: <H?>. Ej: <H1>,<H2>, el de mayor tamao es H1, el de menor H6. Linea divisoria: <HR> Fuente: <FONT>. Ejemplo: <FONT SIZE=30 COLOR=Blue Face=Arial>. Size especifica el tamao, Color el color, y Face la fuente. Listas: o Ordenadas: <OL>. Tiene el atributo TYPE que establece el tipo de lista. Si se usa TYPE=i usa nmeros romanos. Si se usa TYPE=a ordena por letras. La marca <LI> establece cada elemento. El elemento <LI> tiene ya retorno de carro de por si, no es necesario meter la marca <BR> o Desordenadas: <UL>. Similar a las listas ordenadas. Insertar enlace: Etiqueta <A>. Parmetros: HREF. Ejemplo: <A HREF=pagina.html> Insertar Imagen: <IMG SRC=imagen.jpg> Parmetros: ALIGN. Ej: ALIGN=BOTTOM. Establece la posicin con relacin al texto. (No necesita cierre).

Atributos de BODY: Cambiar color de fondo: BGCOLOR. Ej: <BODY BGCOLOR=Blue> Color del texto: TEXT. Ej: <BODY BGCOLOR=Blue TEXT=White>

Creando la ayuda con JavaHelp


Pasos para crear la ayuda:

1.- Crear topics HTML


Creamos un directorio, por ejemplo llamado Ayuda, dentro de este directorio creamos un subdirectorio, ejemplo fuentes. En ese directorio fuentes metemos los archivos que creemos en HTML. Por lo general, como mnimo es necesario un HTML de introduccin. Opcionalmente se puede crear un HTML por cada opcin del programa. Ejemplo: Archivo o Nuevo -> 1 HTML o Abrir -> 1 HTML o Guardar -> 1 HTML o Salir

2.- Crear fichero map


El nombre del fichero puede ser cualquiera, ejemplo: map La extensin ha de ser obligatoriamente jhm. Ej: map.jhm Forma del fichero: ----- map.jhm ----<map version = 1.0> <mapIP target = introduccion url = fuentes/introduccion.html /> <mapIP target = nuevo url = fuentes/nuevo.html /> </map> ----- map.jhm ----Este fichero asocia un nombre a una ruta (un fichero). El fichero map.jhm se mete en el directorio Ayuda.

Proyecto o Ayuda File: map.jhm Dir: fuentes File: introduccion.html File: nuevo.html

3.- Creacin del fichero HelpSet


Nombre: El que queramos. Ejemplo: Ayuda1 Extensin: Obligatoriamente hs. Ej: Ayuda1.hs Contenido fichero: ----- Ayuda1.hs ----<helpset version = 1.0> <maps> <homeID>Introduccin</homeID> <mapref location=map.jhm/> </maps> </helpset> ----- Ayuda1.hs ----homeID: Indica la primera pgina que aparecer al usuario. mapref location: Se le pasa el nombre del fichero map con el que la ayuda va a trabajar.

4.- Creacin de la tabla de Contenidos


Nombre: TOC Extensin: .xml , TOC.xml ------ TOC.xml -----<toc versin = 1.0 > <tocitem text = Mi folder> /* Mi folder = Principal. */ <tocitem text = Introduccion target=introduccion/> <tocitem text=Utilizar mi editor> <tocitem text=Crear doc target=Nuevo/> </tocitem> </tocitem> </toc> ------ TOC.xml ------

El fichero helpset, ha de tener: <view> <name> Tabla de contenidos </name> <label> Tabla de contenidos </label> <type> javax.help tocview </type> <data>toc.xml</data>

5.- Creacin de la tabla de Contenidos


Nombre: Cualquiera. Ej: Index Extensin: xml. Ej: Index.xml Misma forma que el TOC. <index version = 1.0 > <indexitem text=Abrir doc target=abrir/> <indexitem text=Compuesto> /* resto de items. */ </indexitem>

6.- Busqueda
Solo es necesario invocar un programa: jhindexer C:\> jhindexer fuentes Donde fuentes, sera el directorio donde se encuentran los Topics html. Esto crear una carpeta: javahelpsearch

Como incorporar la ayuda a la aplicacin:


El fichero que se carga es el .hs, en nuestro caso: Ayuda.hs Clases necesarias: URL -> import java.net.*; HelpSet -> import javax.help.*; HelpBroker -> import javax.help.*;

Es necesario importar la biblioteca jhall.jar disponible en el directorio donde se encuentre el javahelp: Ej: C:\>jh2.0>javahelp>lib

Mtodos: Helpset: findHelpSet (Estatico) createHelpBroker

HelpBroker: enableHelpOnButton enableHelpKey enableHelp

Mtodo cargar ayuda: void cargarAyuda() { URL hsURL = HelpSet.findHelpSet(null,Ayuda/Ayuda.hs); /* El directorio ayuda, ha de estar dentro del directorio classes. */ HelpSet hs = new HelpSet(null,hsURL); HelpBroker hb = hs.createHelpBroker(); hb.enableHelpOnButton(jButton1, introduccin,hs); hb.enableHelpOnButton(jMenuItem1, introduccion,hs); hb.enableHelpKey(getRootPane(),introduccion,hs); hb.enableHelp(jTextField1, abrir,hs); } Este mtodo se carga despues del jbInit() en el constructor de la clase. Para asociar a n boton o elemento de men usar: enableHelpOnButton(componente,Tepic,ficheros); (Botones o mens) Para activar la tecla F1 se usa: enableHelpKey(componente, Tepic,ficheroHs); -> En componente, usar getRootPane() para todo el panel. Para activar la ayuda de un componente concreto: enableHelp(componente, Tepic,ficheroHs);

Classpath:
El classpath es la variable de entorno la cual contiene los directorios donde buscar las clases que no pertenece a ningun paquete. Ej: Persona -> Persona.class El classapath puede tener directorios y ficheros .jar. Dnde podemos definir el classpath? Inicio -> Configuracin -> Panel del control -> Sistema -> Opciones avanzadas > Variables de entorno -> Variables del sistema. Nombre: Classpath Valor. Ej: C:\prueba Para separar directorios se usa ;. Ejemplo con Clases que no pertenecen a ningn paquete: Directorio: C:\prueba> Classpath: Directorio que contiene las clases. Por lo tanto, en este caso, el classpath debera contener el directorio C:\prueba. Persona.java Aplicacin.java Para compilar dichas clases: javac Persona.java javac Aplicacion.java Para ejecutar la que tiene el mtodo main: java Aplicacin (No es necesario poner extensin). Ejemplo con Clases que pertenecen a un paquete: En este caso es necesario crear un directorio con el nombre del paquete. En ese directorio se debern meter los fuentes (.java). Los archivos han de tener arriba del todo, la frase package nombrePaquete;. Classpath: Estructura de directorios hasta llegar al directorio que contiene el paquete.

Potrebbero piacerti anche