Pregunta

Tengo un problema con mi sencilla JPanel / GridBagLayout:

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



public class gridfenster extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;

    private JButton b1=null;
    private GridBagLayout gbl = null; // i tried it without this line!

    /**
     * @param args
     */
    public  void main() {
        // TODO Auto-generated method stub

        SwingUtilities.invokeLater(new Runnable()
                {
        public void run(){
            gridfenster thisClass = new gridfenster();
            thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
            thisClass.setVisible(true);
        }
    });

    }

    /**
     * @param owner
     */
    public  gridfenster() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(300, 200);
        this.setContentPane(getJContentPane());
        this.setTitle("testgridbag");
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            GridBagLayout gbl = new GridBagLayout();
            jContentPane.setLayout(gbl);
            GridBagConstraints gc = new GridBagConstraints();



            //konkrete Elemente:
            gc.fill =GridBagConstraints.HORIZONTAL ;
            gc.gridx =0; gc.gridy=0;
            gbl.setConstraints(b1,gc);
            jContentPane.add(b1);

        }
        return jContentPane;
    }

}

A continuación, me sale el siguiente error:

IWAV0052E Invocation Target Exception creating gridfenster
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher$1.run(JFCLauncher.java:59)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at gridfenster.getJContentPane(gridfenster.java:71)
    at gridfenster.initialize(gridfenster.java:49)
    at gridfenster.<init>(gridfenster.java:39)
    ... 13 more
¿Fue útil?

Solución

No ha inicializado el campo B1. No se puede agregar nulo en un contenedor.

Otros consejos

Es necesario inicializar los subcomponentes antes de añadirlos a su contenedor. El panel de contenido que está poniendo en b1 tiene ni idea de cómo manejar el botón, ya que en realidad no existe.

Usted declaró que 'B1' es un JButton, pero nunca se haya instanciado.

En algún lugar antes de gbl.setConstraints(b1,gc), es necesario decir b1=new JButton();

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top