Java - Curso Java pildorasinformaticas. Vídeo 104. Procesador textos sencillo

 
Vista:
Imágen de perfil de manuel bg

Curso Java pildorasinformaticas. Vídeo 104. Procesador textos sencillo

Publicado por manuel bg (2 intervenciones) el 13/12/2021 19:28:27
Soy un seguidor del Curso de Java del profesor Juan. Cuando ejecuto el programa Procesador_II.java (vídeo 104 del Curso) me da el siguiente error:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "javax.swing.JTextPane.setFont(java.awt.Font)" because "this.this$0.miarea" is null

He escrito el programa con todo cuidado y no consigo encontrar el error. ¿Alguien me puede ayudar?
Debe de estar aquí:
@Override
public void actionPerformed(ActionEvent e) {
miarea.setFont(new Font(tipo_texto,estilo_letra, tamano_letra));
}
Muchas gracias y un saludo
Manuel Baldán.
Aquí está el listado del programa:

package graficos;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Procesador_II {
public static void main(String[] args) {
// TODO Auto-generated method stub
MenuProcesador_II mimarco=new MenuProcesador_II();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MenuProcesador_II extends JFrame{
public MenuProcesador_II() {
setTitle("Primer procesador de texto");
setBounds(400,200,400,300);
LaminaProcesador_II milamina=new LaminaProcesador_II();
add(milamina);
setVisible(true);
}
}
class LaminaProcesador_II extends JPanel{
public LaminaProcesador_II() {
setLayout(new BorderLayout());//disposición del contenido de lámina principal
JTextPane miarea=new JTextPane();//creamos lámina de texto
add(miarea,BorderLayout.CENTER);//añadimos lámina de texto al centro
JPanel laminamenu=new JPanel();//creamos lámina de menu
add(laminamenu,BorderLayout.NORTH);//añadimos lámina de menu al norte
JMenuBar mibarra=new JMenuBar();//creamos barra de menu
laminamenu.add(mibarra);//añadimos barra menu a lamina de menu
//----------------------------------
fuente=new JMenu("Fuente");
estilo=new JMenu("Estilo");
tamano=new JMenu("Tamaño");
//----------------------------------
configura_menu("Arial","fuente","Arial",9,10);
configura_menu("Courier","fuente","Courier",9,10);
configura_menu("Verdana","fuente","Verdana",9,10);
//-----------------------------------
configura_menu("Negrita","estilo","",Font.BOLD,1);
configura_menu("Cursiva","estilo","",Font.ITALIC,1);
//-----------------------------------
configura_menu("12","tamano","",9,12);
configura_menu("16","tamano","",9,16);
configura_menu("20","tamano","",9,20);
configura_menu("24","tamano","",9,24);
//------------------------------------
mibarra.add(fuente);
mibarra.add(estilo);
mibarra.add(tamano);
}
//---creamos un método
public void configura_menu(String rotulo, String menu, String tipo_letra, int estilos, int tam) {
JMenuItem elem_menu=new JMenuItem(rotulo);
if(menu=="fuente") {
fuente.add(elem_menu);
}else if(menu=="estilo") {
estilo.add(elem_menu);
}else if(menu=="tamano") {
tamano.add(elem_menu);
}
elem_menu.addActionListener(new gestiona_eventos(rotulo,tipo_letra,estilos,tam));
}
private class gestiona_eventos implements ActionListener{
String tipo_texto, menu;
int estilo_letra, tamano_letra;
gestiona_eventos(String elemento,String texto2,int estilo2,int tam_letra){
tipo_texto=texto2;//Courier,Verdana,Arial...
estilo_letra=estilo2;//negrita,cursiva...
tamano_letra=tam_letra;//tamaño de letra
menu=elemento;//elemento de menu que hemos pulsado:Fuente,Estilo,Tamaño
}
@Override
public void actionPerformed(ActionEvent e) {
miarea.setFont(new Font(tipo_texto,estilo_letra, tamano_letra));
}
}
JTextPane miarea;
JMenu fuente, estilo, tamano;
Font letras;
}
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
Imágen de perfil de manuel bg

Curso Java pildorasinformaticas. Vídeo 104. Procesador textos sencillo

Publicado por manuel bg (2 intervenciones) el 14/12/2021 11:00:38
Curso de Java. Vídeo 104 (pildorasinformaticas)
He conseguido encontrar el error que me daba en consola: Exception in thread ... because "this.this$0.miarea" is null

La solución es:

class LaminaProcesador_II extends JPanel{
public LaminaProcesador_II() {
setLayout(new BorderLayout());
//JTextPane miarea=new JTextPane();//<<<---línea errónea
miarea=new JTextPane(); //Esta es la forma correcta
.......}
Un saludo.
Manuel Baldán
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