Professional Documents
Culture Documents
La tcnica de la herencia, aplicada a los componentes, nos permite personalizar cualquier componente, o porque queremos ampliar las posibilidades del componente. La propia VCL utiliza la herencia continuamente, bien para utilizar cdigo de clases padre, o bien para ofrecernos clases padre de las que nosotros podemos heredar. Muchas "suites de componentes" hacen tambin esto, proporcionando un componente heredando a partir de cada uno de los bsicos, y aadiendo en estas nuevas caractersticas. Para explicar cmo crear un componente interactivo, vamos a hacerlo a travs de un ejemplo prctico: supongamos que necesitamos mostrar un rbol que muestre los directorios a partir de una carpeta dada, incluso pongamos que necesitamos mostrar el tpico rbol de "MI PC", mostrando todas las unidades y las carpetas de cada una. Para ello, podramos escribir un componente desde cero, gestionando todo lo referente a la estructura en rbol, el dibujo en pantalla, la gestin de mensajes,etc. Podramos utilizar la herencia para utilizar el cdigo ya escrito, concretamente basndose en el componente ATTreeVienw, que es el que nos permite mostrar en un formulario estructuras del tipo rbol. Sin embargo, el TTreeVienw que viene por defecto en el Delphi, es muy genrico, y sirve para mostrar cualquier ripo de rbol. Nuestro caso es mas especfico: necesitamos mostrar un rbol, s, pero ms concretamente un rbol de directorios. Llamaremos a nuestra nueva creacin TArbolDirectorios. Slo vamos a fijarnos a partir TComponent: TComponent: este nos resulta familiar, ya que es la clase a partir de la que hemos creado en nuestro conversor de monedas de anteriores nmeros. Los componentes no-visuales deben heredar directamente de TComponent, ya que este proporciona las caractersticas bsicas. TControl: se trata de la clase padre para todos los componentes visuales, ya sean grficos o no. TWinControl: de esta clase descendern todos los componentes dibujados directamente por Windows. La principal caracterstica de estos objetos (llamados ventanas o Windows) es que estn identificados por un nmero nico llamado descriptor o manejadores de ventana (en ingls handle). TCustomTreeView: se trata de la clase que permite mostrar un rbol dentro de un formulario de Delphi. La peculiaridad es que esta clase no contiene ningn mtodo ni propiedad en la seccin published, por lo que puedes ser manejada desde el entorno de Delphi. TTreeView: esta ya es la clase o componente final, que aparece registrado en la paleta de componentes, y que puede ser configurado en tiempo de diseo. En realidad, todo el trabajo de esta clase se limita a publicar las propiedades y eventos que han sido programados en la clase TCustomTreeVienw. Ahora que ya sabemos quen va a ser el padre de nuestro componente, tenemos que decir qu propiedades y eventos vamos a proporcionar a nuestros usuarios del componente. CarpetaRaiz: se trata de una cadena que contendr la carpeta a partir de que se crear el rbol de directorios. Puede ser la carpeta raz de una unidad de disco(p.e."C:\") para mostrar los directorios de toda la unidad, o bien una carpeta cualquiera , para mostrar las subcarpetas de esta. Un caso se dar cuando esta propiedad contenga el valor "Mi PC", con en el que mostraremos cada una de las unidades disponibles en nuestro sistemas, pudiendo expandir estas unidades para mostrar sus carpetas. CarpetaActual: es el valor de tipo cadena que contiene la ruta de la carpeta seleccionada en el rbol, por ejemplo. Si, por ejemplo, tenemos seleccionada la carpeta de primer nivel "Datos", y el nodo raz es "C:\Temporal", esta propiedad contendr el valor "C:\Temporal\Datos". Tambin se puede modificar su valor, seleccionndose en ese caso el modo correspondiente en el rbol (si el valor establecido es correcto).
MostarPadre: es un valor booleano (true o false) que nos permite configurar la aparicin no del nodo padre. Es decir: si en la propiedad "CarpetaRaiz" hemos introducido el valor "C:\Delphi", en el rbol aparecer un nodo raz llamado "Delphi", y colgado de l, todas las dems subcarpetas. Si establecemos esta propiedad a falso, el nodo raz desaparecer, mostrndose todas las subcarpetas en un primer nivel, sin colgar de ningn nodo padre. Una interfaz grafica est construida en base a elementos grficos bsicos, los componentes.Tpicos ejemplos de estos componentes son los botones, barras de desplazamientos, etiquetas, listas, cajas de seleccin o campos de textos. Los componentes permiten al usuario a 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 interfaz de usuario son instancias de la clase componente o uno de sus subtipos. Los componentes no se encuentran aislados, si no agrupados dentros de contenedores. Los contenedores contienen y organizan la situacin de los componentes y como tales pueden ser situados dentro de otros contenedores. 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 clase componente es una clase abstracta que representa todo lo que tiene una posicin, un tamao, puede ser pintado en pantalla y puede recibir eventos. No tiene constructores pblicos, ni puede ser instanciada. Sin embargo, la clase Component puede ser extendida para proporcionar una nueva caracterstica incorporada a java, conocida como componentes ligeros o Lightweight. Los objetos derivados de la clase Component que se incluyen en el abstract window Toolkit son los que aparecen a continuacin:
Sobre estos componentes se podrn hacer mas agrupaciones y quiz la ms significativa fuese la que diferencie a los componentes segn el tipo de entrada. A si habra componentes con entrada de tipo no-textual como los botones de pulsacin (Button), las listas (List), botones de marcacin (checkbox), botones de seleccion (Choice), y botones de comprobacin (CheckboxGroup); componentes de entrada y salida textual como los campos de texto (TextField), las reas de texto (TextArea) y las etiquetas (Label); y, otros componentes sin acomodo fijo en ningn lado, en donde se encontraran componentes como las barras de desplazamiento(Scrollbar), zonas de dibujo (Canvas) e incluso los contenedores (Panel, Window, Dialog y Frame), que tambin pueden considerarse como componentes.
La clase Button es aquella que produce un componente de tipo boton con un titulo.El constructor mas utilizado es el que permite pasarle como parametro una cadena, que sera la que aparezca como titulo e identificador del boton en la interfaz de usuario. Botones de seleccin Los botones de seleccin (Choice) permiten el rpido acceso a una lista de elementos, presentndose como titulo en el item que se encuentre seleccionado. La clase choice extiende la clase component e implementa la interfaz ItemSelectable, que es aquella que mantiene un conjunto de items en los que puede haber, o no, alguno seleccionado. Botones de comprobacin La clase CheckBox extiende la clase Componet e implementa la interfazItemSelectable, que es aquella que contiene un conjunto de tems entre los que puede haber o no alguna seleccionado. Los botones de comprobacin (Checkbox) se puede agrupar para formar una interfaz de botn de radio (CheckboxGroup),que son agrupaciones de botones de comprobacin de exclusin mltiple es decir, en la que siempre hay un nico botn activo.
public class Java1403{ public static void main( String args[] ){ //Se instancia un objeto Interfaz Hombre-Mquina IHM ihm = new IHM(); } }
//Ahora se crea un objeto Button y se registra un objeto //ActionListener sobre l Button miBoton = new Button( "Aceptar" ); miBotton.addActionListener( new MiActionListener ( miCheckboxGroup ) );
// Se crea un objeto Frame para contener los objetos Checkbox y el // objeto Button. Se fija un Flowlayout, se incorporan a l los // objetos, se fija el tamao y se hace visible Frame miFrame = new Frame ( " Tutorial de Java, AWT " ); miFrame.setLayout( new FlowLayout() ); miFrame.add( new Checkbox( "A", true,miCheckboxGroup ) ); miFrame.add( new Checkbox( "B", false,miCheckboxGroup ) ); miFrame.add( new Checkbox( "C", false,miCheckboxGroup ) ); miFrame.add( new Checkbox( "D", false,miCheckboxGroup ) ); miFrame.add( miBoton ); miFrame.setSize( 250,100 ); miFrame.setVisible( true );
//Instanciamos y registramos un receptor para terminar la //ejecucin de la aplicacin, cuando el usuario cierre la //ventana miFrame.addWindowListener( new Conclusion() );
} }
// Esta clase indica la caja de seleccin que esta seleccionada // cuando se pulsa el botn de Aceptar class MiActionListener implements ActionListener { CheckboxGroup oCheckBoxGroup;
MiActionListener( CheckboxGroup checkBGroup ) { oCheckBoxGroup = checkBGroup; } public void actionPerformed( ActionEvent evt ) { System .out.println( oCheckBoxGroup.getSelectedCheckbox().getName()+ " " + oCheckBoxGroup.getSelectedCheckBox().getLabel () ); } }
//Concluye la aplicacin cuando el usuario cierra la ventana class Conclusion extends WindowAdapter { public void windowClosing( WindowEvent evt ) { System.exit( 0 ); } }
BIBLIOGRAFIA http://www.sjover.com/jm/prog/delphi/componentes_3.html