2

このクラスの構築に何か問題がありますか? そのインスタンスを別のクラスの JPanel に追加しようとしています。

public class calculator2 extends JPanel {
     public calculator2() {
         JPanel x = new JPanel();
         x.setLayout(new GridLayout(0,5));

         x.add(new JLabel());
         x.add(new JButton("<<"));
         x.add(new JLabel());
         x.add(new JButton(">>"));
         x.add(new JLabel());
     }
}

これは私がそれを使用しようとしているものです:

    calculator2 test = new calculator2();
    JPanel panel3 = new JPanel(new BorderLayout());
    panel3.add(test, BorderLayout.SOUTH);

実行時エラーは発生しません。表示されないだけです。Calculator2 クラスのコードを、コードの 2 番目の部分で使用している同じクラスに配置すると、それが表示されます。ご検討をお願いいたします。

これは実際には単なる例です。アクションリスナーなどを使用して約 25 のコンポーネントを持つ完全なクラスがあり、上記の方法を使用してパネルに追加したいと考えていました。

4

1 に答える 1

5

ここでは、表示される場所にパネルを追加せずに、パネルを作成しているだけです。コンストラクターで別の JPanel の新しいインスタンスを作成する代わりに、JPanel から継承された親メソッドを使用してみてください。

これは になります。x というインスタンスを削除するだけです。

public class calculator2 extends JPanel {
  public calculator2() {
     super();
     setLayout(new GridLayout(0,5));

     add(new JLabel());
     add(new JButton("<<"));
     add(new JLabel());
     add(new JButton(">>"));
     add(new JLabel());
 }
}
于 2012-08-29T20:03:49.030 に答える