Crear un Frame con menú (Parte 3)

    En la parte anterior, vimos como se crea un Frame sencillo en el cual se muestra una ventana en blanco. También deciamos que esta liberia posee la capacidad de crear Ventanas con menús desplegables y botones.

    Primero debemos aclarar que es una variable global, y es aquella que puede ser usada en cualquier método y en cualquier parte del código, se declara fuera de cualquier método y dentro de la clase. Para quedar sin dudas, coloco la estructura en que se crea una variable global:

class VariablesGlobales

{//Inicio de la clase

//Aqui van las variables globales

public static void......

{//Inicio del método

//Resto del código

}//Fin del método

}//Fin de la clase

    Los menú se manejan como variables y no como objetos abstractos, por lo tanto hay que definir el tipo de menú, el nombre que se le asignara y como lo vizualizara el usuario. Estas variables deben ser globales para que todo el programa o clase pueda utilizarlas.

    Esto es muy sencillo de realizar, es igual que declarar una variable del tipo caracter (String), luego que definimos la barra principal, y los elementos que la componen, pasamos a aderir o añadir los items que iran dentro de nuestro menú.

   Estos items pueden declararse de forma directa, o de forma indirecta que es la que comunmente se utiliza para hacer el código más entendible:

  • Forma directa:

     TipoDeVariable VARIABLE = new TipoDeVariable("NOMBRE")

  • Forma indirecta

     TipoDeVariable VARIABLE1= new TipoDeVariable("NOMBRE")

     TipoDeVariable VARIABLE2 = new TipoDeVariable(VARIABLE1)

   En la forma directa, declaramos el nombre de la variable y la forma en la que la vizualizara el usuario. Y en la forma indirecta, creamos una variable que contiene el nombre que se mostrara por pantalla y que pertenece a la VARIABLE2.

    Igualmente podemos usar variables de distintos tipos, las más comunes, y las que utilizaremos, son las siguientes:

  • MenuBar: Crea la barra principal donde ira nuestro menú.
  • Menu: Crea los menús que iran dentro de la barra principal. Ejemplo: Archivo, Edición, Ayuda, etc.
  • MenuItem: Crea los elementos que iran dentro de los menús. Ejemplo: dentro del menú Archivo, Abrir, Guardar, Imprimir, etc.

   Para setear o mostrar la barra principal, la declaramos y la inicializamos, y luego se la añadimos a nuestro Frame. Esto se hace de la siguiente manera:

                MenuBar PRINCIPAL= new MenuBar()

    Allí estamos declarando una variable del tipo menú de barra (MenuBar). Luego de esto declaramos el o los menús principales de la siguiente forma:

               Menu MENU1 = new Menu("Menu1")

               Menu MENU2 = new Menu("Menu2")

    Como explicamos anteriormente, declaramos la variable del tipo menú y escribimos entre comillas ("") el nombre que se mostrara por pantalla. Y por último creamos los items que van dentro de cada menú.

               MenuItem ITEM1 = new MenuItem("Item1")

               MenuItem ITEM2 = new MenuItem("Item2")

               MenuItem ITEM3 = new MenuItem("Item3")

    Luego de terminar todas nuestra variables, y haberlas declarado de forma global, debemos setear la barra principal y añadir cada menú a la barra principal, y cada item a su menú correspondiente, para ello utilizamos el ".add", que significa añadir. Siguiendo los nombres de ejemplo que estamos utilizando, vendria siendo así:

               setMenuBar(PRINCIPAL)

               PRINCIPAL.add(MENU1)

               PRINCIPAL.add(MENU2)

               MENU1.add(ITEM1)

               MENU1.add(ITEM2)

               MENU1.add(ITEM3)

               MENU2.add(ITEM1)

               MENU2.add(ITEM2)

               MENU2.add(ITEM3)

    Lo que hemos hecho aqui es muy simple, con "setMenuBar" indicamos al programa que se inicializara la barra de menú principal, y que a esa barra principal se le añadiran dos menús (MENU1 y MENU2), y que el MENU1 possera 3 items y el MENU2 también.

    Para explicarlo paso por paso, y para que no existan dudas en esta parte que es la más importante, iniciamos la barra principal con "setMenuBar" y entre parentecis el nombre de la variable del tipo "MenuBar".

               setMenuBar(PRINCIPAL)

    Luego le indicamos al programa que en esa barra van dos menús colocando el nombre de la variable del tipo "MenuBar" seguido de un ".add" y entre parentecis el nombre de la variable del tipo "Menu".

               PRINCIPAL.add(MENU1)

               PRINCIPAL.add(MENU2)

Y por último, indicamos al programa que en cada menú van 3 items, colocando el nombre de la variable tipo "Menú" seguido de un ".add" y entre parentecis el nombre de la variable tipo "Item".

               MENU1.add(ITEM1)

               MENU1.add(ITEM2)

               .............

    Aplicando el mismo ejemplo del Frame anterior, vamos a crear una barra de menú.

import java.awt.*;
import javax.swing.*;

public class Ventana extends Frame
{
MenuBar BARRA = new MenuBar();
Menu MENU1 = new Menu("Menu1");
Menu MENU2 = new Menu("Menu2");
MenuItem ITEMa1 = new MenuItem("Item1");
MenuItem ITEMa2 = new MenuItem("Item2");
MenuItem ITEMb1 = new MenuItem("Item1");
MenuItem ITEMb2 = new MenuItem("Item2");

public Ventana()
{
super("Primera Ventana");
setLocation(100,100);
setSize(200,100);
setMenuBar(BARRA);

BARRA.add(MENU1);
BARRA.add(MENU2);
MENU1.add(ITEMa1);
MENU1.add(ITEMa2);
MENU2.add(ITEMb1);
MENU2.add(ITEMb2);

show();
}

public static void main(String[] arg)
{
JOptionPane.showMessageDialog(null,"Usted a creado un Frame");
new Ventana();
}
}

    Si estudiamos el código de este ejemplo, vemos que es sumamente sencillo el crear los elementos que queramos que se muestren en un Frame, igualmente podemos crear un menú mas extenso, ya que este es un ejemplo sumamente sencillo.



6 Comentarios

Escribir Comentario
luis
AUTOR
15 de mayo de 2009, 1:56 delete

Y si quisiera poner un frame para blogger pero un frame que tuviera un reproductor.
esto con el fin de que el reproductor no se recargara al dar click en un link porque cuando doy click en un link se recarga y no quiero que haga eso he buscado soluciones para esto y encontre que se puede hacer poniendo en un frame la pagina y en otro frame el reproductor..pero necesito el codigo....necesito un reproductor como el de esta pagina: http://www.farmasal.com
espero que puedas ayudarme

Responder
avatar
15 de mayo de 2009, 11:18 delete

Veras, lo que tu quieres hacer se hace con JavaScript, y este ejemplo es de Java. No se mucho de blogger, pero para crear un frame en JavaScript haces esto.

script language="JavaScript"
function crearFrame( ) {
var miFrame = document.createElement("IFRAME");
miFrame.id = "miFrame";
miFrame.src = "URL_CONTENIDO";
var control = document.getElementById("miFrame")
if (control==null) {
document.body.appendChild(miFrame);
}
}
/script

Eso va entre head y /head, con este script verificas si no se ha creado un frame y si lo esta no lo vuelve a crear, en "URL_CONTENIDO" puedes poner el reproductor, si es otro script el reproductor, el enlace al servidor donde lo tienes alojado.

Y para llamarlo puedes hacer esto:

input type="button" name="Submit" value="cargar" onclick="crearFrame()"/

Te repito, no se si sera aplicable en blogger, pero asi es como se crea un frame con JavaScript, solo es cuestion de probar.

PD: recuerda agregar los signos mayor y menor que al código de java script y al botón, porque no puedo publicarlos en comentarios.

Responder
avatar
18 de agosto de 2009, 19:49 delete

Hola despues de tres meses...pero esque eso del reproductor lo deje por la paz ya que pues no puede encontrar la solucion, ahora entiendo mas que es lo que necesito pero, en cuanto a tu script esta muy bien me gusto podria servirme para algunas otras cosas pero, cuando cambio de pagina se recarga toda la pagina y esto hace que reproductor se detenga lo que hace que tenga que volver a iniciarlo...desgraciadamente la pagina de farmasal.com ya no existe y ahora no puedo tomar un buen ejemplo.
pero de todas maneras gracias y hoy te linkeare desde mi blog.

Responder
avatar
18 de agosto de 2009, 23:07 delete

Tranquilo, cualquier duda que tengas en cuanto a java o programación no dudes en preguntar que con gusto te ayudare. Saludos.

Responder
avatar
Anónimo
AUTOR
13 de septiembre de 2010, 18:03 delete

Took me time to read the whole article, the article is great but the comments bring more brainstorm ideas, thanks.

- Johnson

Responder
avatar
13 de septiembre de 2010, 18:59 delete

Your welcome... And dont worry... if you have any question just post the comment =)...

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión