1

JPanelを拡張するクラスを書きました。コードは次のとおりです。

public class MedicalMonitorPanel extends JPanel{
    public MedicalMonitorPanel() {
        super();
        initComponents();
    }
    public void initComponents(){
        //layout settings
    }
}

ここで、パネルを jframe に追加します。

public class MedicalMonitorDisplay extends JFrame{
    MedicalMonitorPanel panel;

    public MedicalMonitorDisplay(){
    panel = new MedicalMonitorPanel();
    initComponents();
}
    private void initComponents(){
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
    getContentPane().add(panel);
    getContentPane().validate();
}
    public static void main(String[] args){
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MedicalMonitorDisplay().setVisible(true);
        }
    });
}
}

しかし、私はこの例外を得ました:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at javax.swing.JFrame.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at MedicalMonitorDisplay.initComponents(MedicalMonitorDisplay.java:53)
    at MedicalMonitorDisplay.<init>(MedicalMonitorDisplay.java:40)
    at MedicalMonitorDisplay$1.run(MedicalMonitorDisplay.java:63)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)

add() メソッドに何か問題があることを報告します。どうしたの?

4

2 に答える 2

3

これはまったく意味がありません。

add(panel, getContentPane());

この行を削除して、最初からやり直してください。

代わりに、次の方法でパネルをcontentPaneに追加する必要があります。

getContentPane().add(panel);

それでもうまくいかない場合は、詳細を教えてください。これを試してみると何がうまくいかないのでしょうか。

また、最初にJPanelにキャストしない限り、contentPaneでrevalidateを呼び出すことはできません。ただし、すべてのコンポーネントを追加した後にJFrameを呼び出すので、とにかくcontentPaneを再検証する必要はありませんpack()。それで十分です。

于 2012-08-08T02:47:37.627 に答える