Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Tutorial de Java - MenuComponent

Tutorial de Java - MenuComponent

 ***** (120 opiniones)
Creative Commons Tutorial de Agustín Froufe - 29 de Agosto de 2005
Temas Relacionados: Java
90. MenuComponent
CREAR MENUS Y BARRAS DE MENUS

En la actual versión del AWT que se proporciona con el JDK, sólo se permite crear menús a través de código, ya que Java todavía no dispone de un formato de recursos y tampoco hay un diseñador como pueden ser AppStudio, Delphi o X-Designer; aunque terminará habiendo uno, con seguridad.

No hay ningún método para diseñar una buena interface, todo depende del programador. Los menús son el centro de la aplicación. La diferencia entre una aplicación útil y otra que es totalmente frustrante radica en la organización de los menús, pero eso, las reglas del diseño de un buen árbol de menús, no están claras. Hay un montón de libros acerca de la ergonomía y de cómo se debe implementar la interacción con el usuario. Lo cierto es que por cada uno que defienda una idea, seguro que hay otro que defiende la contraria. Todavía no hay un acuerdo para crear un estándar, con cada Window Manager se publica una guía de estilo diferente. Así que, vamos a explicar lo básico, sin que se deba tomar como dogma de fe, para que luego cada uno haga lo que mejor le parezca.

La interface MenuContainer solamente se puede implementar sobre un Frame. Un applet que desee tener un menú, debe crear un Frame en primer lugar. El código de la función que vamos a ver, crea una barra de menús y se llama desde el constructor del Frame. La función es private porque no queremos que se pueda llamar desde ninguna otra clase.

    private void InicializaMenus() {
         mbarra = new MenuBar();
         Menu m = new Menu( "Archivo" );
         m.add( new MenuItem( "Nuevo") );
         m.add( new MenuItem( "Abrir") );
         m.add( new MenuItem( "Guardar") );
         m.add( new MenuItem( "Guardar como") );
         m.add( new MenuItem( "Imprimir") );
         m.addSeparator();
         m.add( new MenuItem( "Salir") );
         mbarra.add( m );
 
         m = new Menu( "Ayuda" );
         m.add( new MenuItem( "Ayuda!" ) );
         m.addSeparator();
         m.add( new MenuItem( "Acerca de..." ) );
         mbarra.add( m );
 
         setMenuBar( mbarra );
         }
 

El menú que crea esta función tendrá la apariencia que muestra la figura siguiente:

Menu de la aplicacion

Los eventos generados por las opciones de un menú se manejan del mismo modo que los Botones, Listas, etc. En el caso de menús, es el evento ACTION_EVENT de la clase java.awt.MenuItem el que se genera y en evt.target se nos indica la opción seleccionada.

    case Event.ACTION_EVENT: 
         {
         if( evt.target instanceof MenuItem )
             {
             if( "Nuevo".equals( evt.arg ) ) 
                 AplicacionAWT aAwt = new AplicacionAWT();;
             if( "Abrir".equals( evt.arg ) ) 
                 System.out.println( "Opcion -Abrir-" );
             if( "Guardar".equals( evt.arg ) ) 
                 System.out.println( "Opcion -Guardar-" );
             if( "Guardar como".equals( evt.arg ) ) 
                 System.out.println( "Opcion -Guardar como-" );
             if( "Imprimir".equals( evt.arg ) ) 
                 System.out.println( "Opcion -Imprimir-" );
             if( "Salir".equals( evt.arg ) ) 
                 System.exit( 0 );
             if( "Ayuda!".equals( evt.arg ) ) 
                 System.out.println( "No hay ayuda" );
             if( "Acerca de".equals( evt.arg ) ) 
                 System.out.println( "Opcion -Acerca de-" );
             }
         }
 

En el código anterior hemos tratado los eventos del menú. Para más seguridad, aunque no sea estrictamente necesario, lo primero que hacemos es asegurarnos de que el objeto evt.target es realmente un objeto MenuItem, es decir, procede de la barra de menús; y después comprobamos la opción que se ha seleccionado.

Como todo, también se puede rizar el rizo y conseguir reproducir los sistemas de menús que estamos acostumbrados a ver en las aplicaciones que manejamos habitualmente. Un ejemplo de ello son los menús en cascada, semejantes al que muestra la figura y que ha sido generado mediante la aplicación Cascada.java.

Menu en cascada

Básicamente se utiliza la técnica ya descrita, pero en vez de crear un nuevo MenuItem se crea un nuevo Menu, lo que origina el menú en cascada.

No obstante, y volviendo al diseño de interfaces, no debe abusarse de este tipo de menús, porque pueden crear mucha más confusión al usuario. Siempre se debe tener en mente que los usuarios tienen que navegar habitualmente por una gran cantidad de menús en las más diversas aplicaciones, por lo que no debemos esconderles demasiado las opciones que les pueden interesar.

Tabla de contenidos
  1. 1 - DECLARACIÓN DE INTENCIONES
  2. 2 - PRESENTACIÓN
  3. 3 - INTRODUCCIÓN A JAVA
  4. 4 - Origen de JAVA
  5. 5 - Características de JAVA
  6. 6 - HotJava
  7. 7 - JAVA para aplicaciones corporativas
  8. 8 - INSTALACIÓN DEL JDK
  9. 9 - Windows
  10. 10 - Solaris
  11. 11 - Linux
  12. 12 - Compilación sin JDK
  13. 13 - CONCEPTOS BÁSICOS DE JAVA
  14. 14 - Programación en JAVA
  15. 15 - Control del Flujo
  16. 16 - Clases
  17. 17 - Variables y Métodos de Instancia
  18. 18 - Alcance de Objetos y Reciclado de Memoria
  19. 19 - Herencia
  20. 20 - Control de Acceso
  21. 21 - Variables y Métodos Estaticos
  22. 22 - this y super
  23. 23 - Clases Abstractas
  24. 24 - Interfaces
  25. 25 - Métodos Nativos
  26. 26 - Paquetes
  27. 27 - Referencias
  28. 28 - Punteros y Referencias C
  29. 29 - Referencias en Java
  30. 30 - Referencias y Arrays
  31. 31 - Referencias y Listas
  32. 32 - Punteros C/C++ y Referencias Java
  33. 33 - PROGRAMAS BÁSICOS EN JAVA
  34. 34 - Una mínima aplicación en Java
  35. 35 - Compilación y Ejecución de HolaMundo
  36. 36 - El visor de Applets de Sun (appletviewer)
  37. 37 - Arquitectura de appletviewer
  38. 38 - Métodos de appletviewer
  39. 39 - Funciones de menú de appletviewer
  40. 40 - Un Applet basico en Java
  41. 41 - Compilación de un Applet
  42. 42 - La marca APPLET de html
  43. 43 - Atributos de APPLET
  44. 44 - Paso de parametros a Applets
  45. 45 - Tokens en parametros de llamada
  46. 46 - El parametro ARCHIVE
  47. 47 - Depuración general
  48. 48 - Ciclo de vida de un Applet
  49. 49 - Protección de Applets
  50. 50 - Escribir Applets Java
  51. 51 - La aplicación Fecha (Aproximación a OOP)
  52. 52 - EL DEPURADOR DE JAVA - JDB
  53. 53 - CLASES JAVA
  54. 54 - La clase Math
  55. 55 - La clase Character
  56. 56 - La clase Float
  57. 57 - La clase Double
  58. 58 - La clase Integer
  59. 59 - La clase Long
  60. 60 - La clase Boolean
  61. 61 - La clase String
  62. 62 - La clase StringBuffer
  63. 63 - Uso de Conversiones
  64. 64 - ABSTRACT WINDOW TOOLKIT (AWT)
  65. 65 - Interface de Usuario
  66. 66 - Estructura del AWT
  67. 67 - Componentes y Contenedores
  68. 68 - Tipos de Componentes
  69. 69 - BorderLayout
  70. 70 - CardLayout
  71. 71 - CheckboxGroup
  72. 72 - Color
  73. 73 - Component
  74. 74 - Button - Botones
  75. 75 - Canvas
  76. 76 - Checkbox
  77. 77 - Choice
  78. 78 - Container
  79. 79 - Label - Etiquetas
  80. 80 - List - Listas
  81. 81 - Scrollbar - Barras de desplazamiento
  82. 82 - TextComponent
  83. 83 - Fijar el tamaño preferido
  84. 84 - La clase Event
  85. 85 - FlowLayout
  86. 86 - Cambio de fuente de caracteres
  87. 87 - GridLayout
  88. 88 - GridBagLayout
  89. 89 - Uso de Insets
  90. 90 - MenuComponent
  91. 91 - LayoutManager
  92. 92 - Diseño de Componentes propios
  93. 93 - Creación de Aplicaciones con AWT
  94. 94 - Crear el Marco de la aplicación (Frame)
  95. 95 - Inicializar Fuentes, Colores, Layouts y demas recursos
  96. 96 - Crear menús y Barras de Menús
  97. 97 - Crear los controles, dialogos, ventanas, etc.
  98. 98 - Layouts
  99. 99 - FlowLayout
  1. 100 - BorderLayout
  2. 101 - GridLayout
  3. 102 - GridBagLayout
  4. 103 - CardLayout
  5. 104 - Crear un Layout propio
  6. 105 - Control de Eventos
  7. 106 - La clase Event
  8. 107 - Tipos de Eventos
  9. 108 - Generación y Propagación de Eventos
  10. 109 - Métodos de Control de Eventos
  11. 110 - Action_Event
  12. 111 - Mejorar el Diseño de Interfaces
  13. 112 - Cambio de Font de Caracteres
  14. 113 - Colores de Fondo y Texto
  15. 114 - Fijar el Tamaño Preferido
  16. 115 - Uso de Insets
  17. 116 - Habilitar y Deshabilitar Componentes
  18. 117 - Botón Grafico
  19. 118 - GRÁFICOS
  20. 119 - Métodos para Dibujos
  21. 120 - Líneas
  22. 121 - Rectangulos
  23. 122 - Círculos, Elipses
  24. 123 - EXCEPCIONES EN JAVA
  25. 124 - Funciones Graficas
  26. 125 - Manejo de Excepciones
  27. 126 - Fractales
  28. 127 - Generar Excepciones en Java
  29. 128 - Líneas Flotantes
  30. 129 - Excepciones Predefinidas
  31. 130 - Métodos para Imagenes
  32. 131 - Crear Excepciones Propias
  33. 132 - Doble Buffering de Graficos
  34. 133 - Capturar Excepciones
  35. 134 - Nuevas Clases para Dibujo
  36. 135 - Propagación de Excepciones
  37. 136 - La Clase MediaTracker
  38. 137 - THREADS Y MULTITHREADING
  39. 138 - Sonido en Java
  40. 139 - Flujo en Programas
  41. 140 - Entrada por Ratón
  42. 141 - Creación y Control de Threads
  43. 142 - Arrancar y Parar Threads
  44. 143 - Suspender y Reanudar Threads
  45. 144 - Estados de un Thread
  46. 145 - Scheduling
  47. 146 - Prioridades, demonios...
  48. 147 - Ejemplo de Animación
  49. 148 - Comunicación entre Threads
  50. 149 - MÉTODOS NATIVOS
  51. 150 - Escribir Código Java
  52. 151 - Compilar el Código Java
  53. 152 - Crear el fichero de Cabecera
  54. 153 - Crear el fichero de Stubs
  55. 154 - Escribir la función C
  56. 155 - Crear la Librería Dinamica
  57. 156 - Ejecutar el Programa
  58. 157 - ENTRADA / SALIDA ESTÁNDAR
  59. 158 - La clase System
  60. 159 - Clases comunes de Entrada/Salida
  61. 160 - FICHEROS EN JAVA
  62. 161 - Ficheros
  63. 162 - Streams de Entrada
  64. 163 - Streams de Salida
  65. 164 - Ficheros de Acceso Aleatorio
  66. 165 - COMUNICACIONES EN JAVA
  67. 166 - Comunicaciones en Unix
  68. 167 - Sockets
  69. 168 - Diferencias entre Sockets Stream y Datagrama
  70. 169 - Uso de Sockets
  71. 170 - Dominios de Comunicaciones
  72. 171 - Modelo de Comunicaciones con Java
  73. 172 - Apertura de Sockets
  74. 173 - Creación de Streams
  75. 174 - Cierre de Sockets
  76. 175 - Mínimo Cliente SMTP
  77. 176 - Servidor de Eco
  78. 177 - Cliente/Servidor TCP/IP
  79. 178 - Servidor Simple de HTTP
  80. 179 - Red en Windows '95 (sin conexión)
  81. 180 - Clases Útiles en Comunicaciones
  82. 181 - ARQUITECTURA MVC EN JAVA
  83. 182 - La Arquitectura MVC
  84. 183 - Observador y Observable
  85. 184 - Cómo utilizar Observer y Observable
  86. 185 - Ejemplo de aplicación MVC
  87. 186 - APLICACIONES EN JAVA
  88. 187 - Etiqueta
  89. 188 - Reloj Digital
  90. 189 - Persiana
  91. 190 - Solapas
  92. 191 - Transparencia
  93. 192 - Calculadora
  94. 193 - Cuenta-Kilómetros
  95. 194 - Cartel
  96. 195 - FINAL Y AGRADECIMIENTOS
  97. 196 - JAVA Y MATLAB
  98. 197 - Java
Autor y licencia de 'Tutorial de Java - MenuComponent'
Agustín Froufe Extraído de: http://www.publispain.com/supertutoriales/

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Tutorial de Java - MenuComponent'

La idea es dar una guía ordenada para el estudio de este lenguaje, muy poderoso... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
PHP se ha convertido en el lenguaje de facto de Internet y no es difícil... Más »
Si tuviera que buscar un adjetivo para calificar a Sendmail, pensaría en "excesivo". Excesivo puesto... Más »
La red telefónica básica se creó para permitir las comunicaciones de voz a distancia. Esto... Más »
¿Estás seguro de que deseas eliminar este capítulo?