Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JAppletでオーバーライド

そのやり方が分かりません。本を何回読んでも理解できないのが現状です。

すみませんが簡単に解説してくださいませんでしょうか??

11

回答

8205

閲覧

11件の回答

評価

0

何をオーバライドしたいのですか?

評価

0

メソッドです。

今、プログラムでActionListener, MouseAdapterを使って適当なものを作成しています。

どうして、MouseListenerを使うのにオーバーライドしなければいけないのか分かりません。

評価

0

>どうして、MouseListenerを使うのにオーバーライドしなければいけないのか

その、本にある説明を書いてみては?
本の作者が言わんとしていることを、単にあなたが読み違えているだけかもしれない。

評価

0

別にオーバーライドしなければいけないわけでは無いですが・・・・。友達にそれで出来たよといわれたので作成しています。

アダプタークラスで作成して、それをマウスリスナーで作り直したいだけです。

リスナークラスインターフェイスは、実装するにはインターフェイスのメソッドすべて定義しないとならないと書いてありました。
それで、書いてはみたのですが、どうしても出来ません。

評価

0

ソースを載せると話が早いかも。

評価

0

補足:

>別にオーバーライドしなければいけないわけでは無いですが

MouseListenerをimplementsするならしなきゃ駄目ですよ。

>リスナークラスインターフェイスは、実装するにはインターフェイスのメソッドすべて定義しないとならないと

うーん。。。
何と言うか、
書いては見たけど出来ないということは、
実装してないんじゃないですかね。
    public void mouseClicked(MouseEvent e) {
        
    }

    public void mouseEntered(MouseEvent e) {
        
    }

    public void mouseExited(MouseEvent e) {
        
    }

    public void mousePressed(MouseEvent e) {
        
    }

    public void mouseReleased(MouseEvent e) {
        
    }
例えばこれだけ書いてみたとか。

評価

0

一応プログラムを書きます。インターフェイスのメソッドは定義しています。

public class s0712078_03 extends JApplet
{
 private JLabel lb;
 private JButton bt;

 public void init()
 {
 Container cnt = getContentPane();
        
 lb = new JLabel("");
 bt = new JButton("");
    
 cnt.add(lb, BorderLayout.CENTER);
 cnt.add(bt, BorderLayout.SOUTH);
        
 bt.addActionListener(new   SampleActionListener());
 }

 class SampleActionListener implements ActionListener
 {
 public void actionPerformed(ActionEvent e)
 {
 lb.setText("");
 bt.setText("");
 addMouseListener(new SampleActionListener());
 }
 }

 public void mouseEntered(MouseEvent e)
 {
 }
 public void mousePressed(MouseEvent e)
 {
 lb.setText("123");
 bt.setText("戻る");
        }
 public void mouseReleased(MouseEvent e)
 {
 }
 
 public void mouseClicked(MouseEvent e)
 {
 }
 
 public void mouseExited(MouseEvent e)
 {
 }
}

評価

0

そもそも、ボタン用のActionListenerの中でaddMouseListener()を呼ぶ理由が分からないけど、それを置いておくと、こうでしょう:
-----------------------------------
public class s0712078_03 extends JApplet{
  private JLabel lb;
  private JButton bt;

  public void init(){
    Container cnt = getContentPane();

    lb = new JLabel("");
    bt = new JButton("");

    cnt.add(lb, BorderLayout.CENTER);
    cnt.add(bt, BorderLayout.SOUTH);

    bt.addActionListener(new   SampleActionListener());
  }

  class SampleActionListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
      lb.setText("");
      bt.setText("");
      addMouseListener(new SampleMouseListener());
    }
  }

  class SampleMouseListener implements MouseListener{
    public void mouseEntered(MouseEvent e){
    }

    public void mousePressed(MouseEvent e){
      lb.setText("123");
      bt.setText("戻る");
    }

    public void mouseReleased(MouseEvent e){
    }

    public void mouseClicked(MouseEvent e){
    }

    public void mouseExited(MouseEvent e){
    }
  }
}
---------------------------------

評価

0

>コロさん
>MouseListenerをimplementsするならしなきゃ駄目ですよ。
これの意味は…?
インターフェースの実装はオーバーライドではないですが。

評価

0


>アダプタークラスで作成して、それをマウスリスナーで作り直したいだけです

と書いてあったので、空実装の上書きをしたいのかなぁと思ったのですが・・・・



評価

0

単に言葉の問題だろうけど。
MouseAdapterは空メソッドが定義されているから、自分のメソッドは「オーバーライド」だけど、MouseListenerをimplementsして書く場合はそれが初めての定義なのだから、「オーバーライド」ではないでしょ?


で、

MouseAdapter+必要なだけの自分のメソッド

は、

MouseListener+必要なだけの自分のメソッド+実装されていないメソッドの空メソッド

に等しいんだから、同じ書き方でうまくいかないはずはない。
どこまでうまくいってて、どこからうまくいかないのか…という視点で考えて欲しいと思うけど、とりあえずrancoさんが書いてくれたものを検討してみましょ。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。