0 votos
por (420 puntos) en Java
Hola compañeros.

estoy haciendo un block de notas para acostumbrarme a usar java antes de pasar a las lecciones de conexión online porque quiero tener las cosas claras :)

mi problema es que he creado dos clases "principal" y "menuinicio"

la primera llama desde el constructor a menuinicio para cargar la barra de inicio.

la segunda carga el JFrame con la barra pero quiero dividir en métodos los botones de la barra "inicio" "edición" y he probado creando métodos dentro de esa clase y los carga desde su constructor junto con el JFrame pero sólo me carga uno de ellos.

o me carga inicio o me carga edicion y no sé como agregar ambos a la misma barra y que así aparezcan los dos.

dejo el código fuente de "menuinicio" para que me digais que hago mal, se puede probar directamente si le poneis el main.

<pre lang='java'>package ventana;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JFrame;

class menuinicio extends JFrame{
 public menuinicio(){
        super();
        setSize(400,400);
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        inicio();
        edicion();
        setVisible(true);
 }

 private void inicio(){
      JMenuBar barra = new JMenuBar();
            JMenu inicio = new JMenu("Inicio");
                JMenuItem  abrir = new JMenuItem("Abrir");
                JMenuItem  guardar = new JMenuItem("Guardar");
                JMenuItem  cerrar = new JMenuItem("Cerrar");
                JMenuItem  opciones = new JMenuItem("Opciones");
            inicio.add(abrir);
            inicio.add(guardar);
            inicio.add(cerrar);
            inicio.add(opciones);
        barra.add(inicio);
        setJMenuBar(barra);
 }
 private void edicion(){
    JMenuBar barra = new JMenuBar();
            JMenu edicion = new JMenu("Edición");
                JMenuItem  cortar = new JMenuItem("Cortar");
                JMenuItem  copiar = new JMenuItem("Copiar");
                JMenuItem  pegar = new JMenuItem("Pegar");
                JMenuItem  buscar = new JMenuItem("Buscar");
            edicion.add(cortar);
            edicion.add(copiar);
            edicion.add(pegar);
            edicion.add(buscar);
            barra.add(edicion);
        setJMenuBar(barra);
 }
}

2 Respuestas

0 votos
por (8.5k puntos)
El problema es que "machacas" barra de menu, lo que tienes que hacer en crear una barra de Menu y añadirle tantos JMenu como quieras. Por cierto, por convenio los nombres de las Clases empiezan por mayúscula.

Algo así:



public class MenuInicio extends JFrame {
    public MenuInicio() {
        super();
        setSize(400, 400);
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        JMenuBar barra = new JMenuBar();
        inicio(barra);
        edicion(barra);
                setJMenuBar(barra);
        setVisible(true);
    }

    private void inicio(JMenuBar barra) {
        JMenu inicio = new JMenu("Inicio");
        JMenuItem abrir = new JMenuItem("Abrir");
        JMenuItem guardar = new JMenuItem("Guardar");
        JMenuItem cerrar = new JMenuItem("Cerrar");
        JMenuItem opciones = new JMenuItem("Opciones");
        inicio.add(abrir);
        inicio.add(guardar);
        inicio.add(cerrar);
        inicio.add(opciones);
        barra.add(inicio);

    }

    private void edicion(JMenuBar barra) {
        JMenu edicion = new JMenu("Edición");
        JMenuItem cortar = new JMenuItem("Cortar");
        JMenuItem copiar = new JMenuItem("Copiar");
        JMenuItem pegar = new JMenuItem("Pegar");
        JMenuItem buscar = new JMenuItem("Buscar");
        edicion.add(cortar);
        edicion.add(copiar);
        edicion.add(pegar);
        edicion.add(buscar);
        barra.add(edicion);
    }
}

Seguro que esto te ayuda un poco más: http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html


0 votos
por (420 puntos)
muchas gracias!!

joder que habia probado de todo y sabía que era un fallo de novato :)

Gracias por el favor de contestar con los cambios ya hechos porque yo cambié los nombres, lo que hay dentro del parentesis.. y no funcionaba.

uf.. una preocupación menos de momento :)


Preguntas relacionadas

0 votos
2 respuestas
0 votos
3 respuestas
preguntado por Iggy16 (540 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...