java - java中一个简单的按钮处理程序的运行时错误

标签 java swing

您好,我在使用基本按钮处理程序时遇到了问题。我在运行时遇到此错误。

Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1086)
    at java.awt.Container.add(Container.java:998)
    at javax.swing.JFrame.addImpl(JFrame.java:562)
    at java.awt.Container.add(Container.java:966)
    at practicagrafica5.botonpanel.<init>(botonpanel.java:44)
    at practicagrafica5.Practicagrafica5.main(Practicagrafica5.java:17)
Java Result: 1

继承人代码:

    package practicagrafica5;

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



public class botonpanel {


    JButton botones[];
    String nombresbot[]={"primero","segundo","tercero"};
    JTextArea areatexto;
    JPanel panelbotones;
    JFrame ventana;

    botonpanel(){
    JFrame.setDefaultLookAndFeelDecorated(true);
    ventana= new JFrame("botones de prueba");
    ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ventana.setLayout(new BorderLayout());
     ventana.setSize(400, 400);

    /* NOTA:
     ventana.setIconImage(Toolkit.getDefaultToolKit().createImage("aqui iria la ruta de la imagen en la pc")
    */
    botones=new JButton[nombresbot.length];
    panelbotones=new JPanel();
    panelbotones.setLayout(new FlowLayout(FlowLayout.LEFT));


    for (int i=0; i<nombresbot.length; i++){
    botones[i]=new JButton();
    botones[i].setName(nombresbot[i]);
    botones[i].setToolTipText("este es "+nombresbot[i]);
    botones[i].addMouseListener(new handlerbotones());
    panelbotones.add(botones[i]);
    }
    ventana.add(panelbotones,BorderLayout.NORTH);
    ventana.add(areatexto,BorderLayout.CENTER);
    ventana.setVisible(true);
    }//finaliza el constructor

    class handlerbotones extends MouseAdapter{

        @Override
        public void mousePressed(MouseEvent e){
            //como JPanel es un "hijo" de Component utilizamos en los metodos un objeto de la clase Component
            //y con su metodo getComponent obtendremos una referencia al componente en este caso el boton.
    Component aux = e.getComponent();
    System.out.println(aux.getName());
    }
        @Override
    public void mouseReleased(MouseEvent e){
     Component aux= e.getComponent();
            switch (aux.getName()) {
                case "primero":
                    areatexto.append("se ha pulsado el primer boton \n");
                    break;
                case "segundo":
                    areatexto.append("se ha pulsado el segundo \n");
                    break;
                case "tercero":
                    areatexto.append("se ha pulsado el tercero \n");
                    break;
                default:
                    areatexto.append("no has pulsado un coño");
                    break;
            }
    }
    }//finaliza la clase interna handlerbotones


}

主应用程序中的代码只是:

package practicagrafica5;

public class Practicagrafica5 {


    public static void main(String[] args) {
    botonpanel lol= new botonpanel();
    }
}

拜托,我的头要被这个炸了。我不知道我的错误在哪里。任何建议都会有所帮助。

谢谢。

最佳答案

您永远不会创建 areatexto 对象,例如

areatexto = new JTextArea();

关于java - java中一个简单的按钮处理程序的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327174/

相关文章:

java - 在 PagingAndSortingRepository 中使用自定义过滤器进行查找

java - 重复类

java - 代码有时有效但有时无效(内存或线程问题)

java - getExternalFilesDir() 是私有(private)的吗?

Java:扩展和实现的对象映射

java - Hibernate - 学生评分系统。需要注释方面的帮助

java - 如何从没有 swing 组件初始化的线程将数据记录到 JTextArea(或 JTextPane)?

java - Swing ;我将如何以这种格式放置我的组件?

java - 如何在 jframe 中启动和停止循环

java - 为什么joptionpane弹出两次