Java - Codigo Menus

 
Vista:

Codigo Menus

Publicado por Leandro (3 intervenciones) el 21/03/2019 19:27:43
Hola que tal quería consultar ando en procesado de aprendizaje de este lenguaje y quería consultar si hay alguna manera de lograr lo que planteo.

estoy automatizando la generación de JMenu y JMenuItem para no generar tanto codigo.
pero al hacer el 2do metodo me genera un error y la verdad pienso que es por la forma en la que instancio los JMenu.

adjunto lo que ando haciendo, saludos!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ProcesadorTexto;
 
import javax.swing.*;
import java.awt.*;
 
 
public class MenuProcesador3 extends JMenuBar {
 
    public MenuProcesador3(){
        setVisible(true);
        setLayout(new FlowLayout());
        generaMenu(fuente, "Fuente");
        generaMenu(estilo, "Estilo");
        generaMenu(tamano, "Tamaño");
        generaItemsMenu("Fuente",arial, "Arial", 0,0);
        generaItemsMenu("Fuente",calibri, "Calibri", 0,0);
        generaItemsMenu("Fuente",serif, "Serif", 0,0);
    }
 
    private void generaMenu(JMenu elementoMenuP, String nombreMenuP){
        elementoMenuP=new JMenu(nombreMenuP);
        add(elementoMenuP);
    }
    private void generaItemsMenu(String nombreMenuP, JMenuItem item, String nombreItem, int valorEstilo, int valorTamaño){
        item=new JMenuItem(nombreItem);
        if (nombreMenuP.equalsIgnoreCase("Fuente")){
            fuente.add(item);
        } else if (nombreMenuP.equalsIgnoreCase("Estilo")){
            estilo.add(item);
        }else if (nombreMenuP.equalsIgnoreCase("Tamaño")){
            tamano.add(item);
        }
    }
 
 
    public static HojaProcesador hoja;
    private JMenu fuente, estilo, tamano;
    private JMenuItem arial, calibri, serif, cursiva, negrita, tam12, tam14, tam20;
    private Font letra;
}

y me genera el siguiente error
1
2
3
4
5
6
Exception in thread "main" java.lang.NullPointerException
	at ProcesadorTexto.MenuProcesador3.generaItemsMenu(MenuProcesador3.java:27)
	at ProcesadorTexto.MenuProcesador3.<init>(MenuProcesador3.java:16)
	at ProcesadorTexto.LaminaProcesador.<init>(LaminaProcesador.java:12)
	at ProcesadorTexto.MarcoProcesador.<init>(MarcoProcesador.java:13)
	at ProcesadorTexto.MainProcesador.main(MainProcesador.java:12)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 147
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Codigo Menus

Publicado por Yamil Bracho (2302 intervenciones) el 21/03/2019 19:34:09
Te falta crear los objetos arial colibri y serif
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Menus

Publicado por Leandro (3 intervenciones) el 21/03/2019 19:43:45
Los tengo creados en la parte inferior del codigo

1
2
3
4
public static HojaProcesador hoja;
private JMenu fuente, estilo, tamano;
private JMenuItem arial, calibri, serif, cursiva, negrita, tam12, tam14, tam20;
private Font letra;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Codigo Menus

Publicado por Yamil Bracho (2302 intervenciones) el 21/03/2019 20:28:14
Ahoi estan declarados pero no inicializados...
Si no se usa el new ... Java los inicializa en null (en caso de variables referencia)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Menus

Publicado por Leandro (3 intervenciones) el 21/03/2019 21:52:53
Muchas muchas gracias de verdad, disculpa las molestias.

Saludos, ya pude resolverlo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar