1

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;
    }

}

次に、次のエラーが表示されます。

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
4

3 に答える 3

4

b1 フィールドを初期化していません。コンテナーに null を追加することはできません。

于 2010-01-29T19:40:33.497 に答える
1

サブコンポーネントをコンテナに追加する前に、サブコンポーネントを初期化する必要があります。b1を配置しているコンテンツペインには、ボタンがまだ実際には存在しないため、ボタンの処理方法がわかりません。

于 2010-01-29T19:43:42.000 に答える
1

'b1'はJButtonであると宣言しましたが、インスタンス化したことはありません。

前のどこかでgbl.setConstraints(b1,gc)、あなたは言う必要がありますb1=new JButton();

于 2010-01-29T19:44:27.433 に答える