-3

次のソースを実行しようとしましたが、

タイプの不一致: CustomJPan から JPanel に変換できません

エラー。誰か助けてくれませんか?ソースを許してください、私は頭の上からそれをしました。

public class rebuiltgui extends JApplet {

  public void init() {

    JPanel jpan = new CustomJPan();     
  }
}

class CustomJPan  {

  public JPanel CustomJPan()  {

    thispan = new JPanel();
    thispan.setBackground( Color.red );
    return thispan;
  }

  public changeColour() {

    // Change colour to blue here
  }
}
4

2 に答える 2

2

次のようなものを試してください

public class rebuiltgui extends JApplet {

  public void init() {

    JPanel jpan = new CustomJPan();     
  }
}

class CustomJPan extends  JPanel {

  public CustomJPan()  {
      super();
      setBackground( Color.red );
  }

  public void changeColour() {

    // Change colour to blue here
  }
}

jpanelを拡張するように変更しました

于 2013-02-23T04:35:59.627 に答える
2

CustomJPan は何も拡張しないため、コードは直接サブクラス化を行いません。代わりに、クラスと同じ名前の「疑似」コンストラクター CustomJPan が何かを返そうとしているように見えます。もちろん、コンストラクターが何も返さないと宣言されていることはわかっています。

サブクラス化する場合は、別のクラスを拡張する必要があります。

つまり、

public class CustomJPan extends JPanel {

   // a real constructor has no return type!
   public CustomJPan() {
       // ....         
   }

  // ... etc
}

サブクラス化については、Java の入門書で十分に説明されています。この章を読むことをお勧めします。

警告: 特にメソッドをオーバーライドしたい場合は、クラスの固有の動作を変更したいなどの明確な必要性がない限り、サブクラス化は避けてください。

于 2013-02-23T04:29:15.900 に答える