0

このプログラムは、マウスが画面上で動かされずにクリックされた回数を示すステータスバーをその下に持つウィンドウを作成するとします。マウスを動かしてクリックすると、新しいカウントが開始されるとします。また、さまざまなマウス ボタンを区別します。私が見たチュートリアルとまったく同じようにこのコードに従いましたが、うまくいきません。ステータスバーが変わらないウィンドウが表示されます。

public class Adapter_class extends JFrame {

    private String details;
    private JLabel statusBar;
    public Adapter_class() {

        super("Adapter mouse:");

        this.statusBar = new JLabel("Default");
        add(this.statusBar, BorderLayout.SOUTH);

        addMouseListener(new MouseClass());
    }

    private class MouseClass extends MouseAdapter {
        public void MouseClicked (MouseEvent event) {
            details = String.format("You clicked the mouse %d", event.getClickCount());


            //this is for using a mouse from a mac
            if (event.isMetaDown())
            details += " with the right mouse button";
            else if (event.isAltDown())
            details += " with the center mouse button";
            else
            details += " with the left mouse button";

            statusBar.setText(details);
        }
    }
}

これがメインです:

import javax.swing.JFrame;

public class Adapter_main {

    public static void main(String[] args) {

        Adapter_class window = new Adapter_class();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(400, 300);
        window.setVisible(true);
    }
}
4

2 に答える 2

5

大文字の MでメソッドMouseClickedを記述しました。小文字バージョンを使用してください

public void mouseClicked(MouseEvent event) { ... }

それ以外の場合は、新しいメソッドを作成し、アダプターのメソッドをオーバーライドしません。@Overrideコンパイラに問題を表示させる注釈を含めることもできます。

于 2013-02-11T07:14:47.763 に答える
4
public abstract class MouseAdapter implements MouseListener, MouseWheelListener, MouseMotionListener {
    /**
     * {@inheritDoc}
     */
    public void mouseClicked(MouseEvent e) {}

これを使って:

private class MouseClass extends MouseAdapter {
    public void mouseClicked (MouseEvent event){

ここであなたが書かなければならない関数はそうではあり **mouseClicked**ません**MouseClicked**

そのため、注釈を使用すると役立ちます。@Override はすぐに役に立ちました。

于 2013-02-11T07:17:17.757 に答える