0

を拡張するクラスがありますJFrame。そのコンストラクターで、それを呼び出しgetContentPane()て に保存しContainerます。ただし、「null」を出力し、呼び出すとnullポインター例外がスローされるため、 getContentPane()nullを返しているようです。System.out.println(container)container.setLayout(new BorderLayout)

いくつかのコード例:

public class Example extends JFrame implements ... {
    public Example(){
        Container container = getContentPane();
        System.out.println(container);    //prints "null"
        container.setLayout(new BorderLayout());    //throws nullpointerexception

さらに、setLayoutクラス自体 (つまりthis.setLayout()) を呼び出すと もスローNullPointerExceptionされますが、ドキュメントを正しく理解していれば、これはフレームで呼び出すと単にフレームの に委任されるためcontentPaneです。私は Eclipse を使用していますが、警告やエラーは指摘されていません。この例外は、2 つのレベル (クラスがインスタンス化される main() からsetLayout()呼び出しまで) しかトレースバックしないため、あまり役に立ちません。

必要に応じてコード全体を投稿できますが、これはクラスの割り当てのためであり、チート対策ソフトウェアにフラグを立てたくないため、投稿したくありません。

4

1 に答える 1

1

問題が見つかりました。Eclipse でクラスを作成すると、一連のメソッドが自動生成され、そのうちの 1 つがgetContentPane(). 自動生成されたメソッドは null を返すだけで、これが問題の原因でした。自動生成されたすべてのメソッドを取り除き、現在は機能しています。

于 2013-04-23T17:18:54.320 に答える