1

ラベル、テキストフィールド、ボタンのあるウィンドウを表示するプログラムを作成しました。テキストフィールドでマウスをクリックすると、プログラムVirtualKeyboardTest.javaが呼び出されます。

import java.awt.*;
import java.awt.event.*;

class WindowText implements MouseListener
{
    public static void main(String[] args) 
    {
        Frame f=new Frame("New Window");
        f.setSize(500,300);
        f.setVisible(true);
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        Panel p = new Panel();
        Panel p1 = new Panel();
        Label lb = new Label("Click on textfield");
        TextField tf = new TextField(20);
        tf.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e)
            {
                new VirtualKeyboardTest();
            }
            public void mousePressed(MouseEvent e){}
            public void mouseEntered(MouseEvent e){}
            public void mouseExited(MouseEvent e){}
            public void mouseReleased(MouseEvent e){}
        });

        p.setLayout(new FlowLayout());
        p.add(lb);
        p.add(tf);

        Button Submit=new Button("Submit");
        p.add(Submit);
        p1.add(p);
        f.add(p1,BorderLayout.CENTER);
    }
}

しかし、このプログラムをコンパイルしようとすると、次のようなエラーが発生します。

 WindowText.java:4: WindowText is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
    class WindowText implements MouseListener
    ^
    1 error

MouseListenerのすべてのメソッドをオーバーライドしたのに、なぜこのエラーが発生するのか理解できません。

4

2 に答える 2

1

MouseListenerが持っているメソッドを実装する必要があります。

                public void mousePressed(MouseEvent e){}
                public void mouseEntered(MouseEvent e){}
                public void mouseExited(MouseEvent e){}
                public void mouseReleased(MouseEvent e){}

MouseTextでオーバーライドする必要があります。しかし、匿名のアダプターがあるので、MouseTextがMouseListenerを実装するのは冗長に思えます。

于 2012-10-08T05:38:21.817 に答える
0
class WindowText implements MouseListener 

これはWindowTest、インターフェースで宣言されたすべての*メソッドの本体を定義する必要があることを意味しますMouseListener

エラーは明確に述べています: mouseExited(java.awt.event.MouseEvent)あなたのクラスには実装されていません。したがって、正常にコンパイルするには、そのメソッドを実装する必要があります。

(*)実装クラスが抽象である場合、本体を定義せず、メソッドを。としてマークする場合がありますabstract。これで、派生クラスによって実装されるはずです。これにより、エラーステートメントで使用されている抽象的な単語がクリアされることを願っています。

于 2012-10-08T05:39:45.903 に答える