Мой (Java / Swing) MouseListener не слушает, помоги мне понять, почему

голоса
6

Таким образом , я получил JPanelреализацию MouseListenerи MouseMotionListener:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class DisplayArea extends JPanel implements MouseListener, MouseMotionListener  {
    public DisplayArea(Rectangle bounds, Display display) {
        setLayout(null);
        setBounds(bounds);
        setOpaque(false);
        setPreferredSize(new Dimension(bounds.width, bounds.height));

        this.display = display;
    }

    public void paintComponent(Graphics g) {
         Graphics2D g2 = (Graphics2D)g;
         if (display.getControlPanel().Antialiasing()) {
             g2.addRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON));
         }
         g2.setColor(Color.white);
         g2.fillRect(0, 0, getWidth(), getHeight());
    }

    public void mousePressed(MouseEvent event) {
        System.out.println(mousePressed());
        mx1 = event.getX();
        my1 = event.getY();
    }

    public void mouseReleased(MouseEvent event) {
        System.out.println(mouseReleased());
        mx2 = event.getX();
        my2 = event.getY();

        int mode = display.getControlPanel().Mode();
        switch (mode) {
        case ControlPanel.LINE:
             System.out.println(Line from  + mx1 + ,  + my1 +  to  + mx2 + ,  + my2 + .);
        }
    }

    public void mouseEntered(MouseEvent event) {
        System.out.println(mouseEntered());
    }

    public void mouseExited(MouseEvent event) {
        System.out.println(mouseExited());
    }

    public void mouseClicked(MouseEvent event) {
        System.out.println(mouseClicked());
    }

    public void mouseMoved(MouseEvent event) {
        System.out.println(mouseMoved());
    }

    public void mouseDragged(MouseEvent event) {
         System.out.println(mouseDragged());
    }

    private Display display = null;

    private int mx1 = -1;
    private int my1 = -1;
    private int mx2 = -1;
    private int my2 = -1;
}

Беда в том, ни одна из этих функций мышей когда - либо называется. DisplayAreaсоздается следующим образом:

da = new DisplayArea(new Rectangle(CONTROL_WIDTH, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT), this);

Я на самом деле не программист Java (это часть присваивания), но я не вижу ничего вопиюще очевидное. Может кто-то умнее, чем я вижу что-нибудь?

Задан 29/08/2008 в 01:37
источник пользователем
На других языках...                            


3 ответов

голоса
13

Орудия MouseListener, MouseMotionListener только позволяет класс displayArea слушать некоторые, чтобы определить, событие мыши компоненты исполнять джазовую музыку в стиле свинга. Вы должны явно определить , что он должен слушать в. Таким образом , я полагаю , вы могли бы добавить что - то вроде этого в конструкторе:

this.addMouseListener(this);
this.addMouseMotionListener(this);
Ответил 29/08/2008 d 01:42
источник пользователем

голоса
3

Я не вижу никакого кода здесь, чтобы зарегистрироваться на слушатель мыши. Вы должны вызвать addMouseListener (это) и addMouseMotionListener (это) на DisplayArea.

Ответил 29/08/2008 d 01:43
источник пользователем

голоса
3

Я не вижу в коде, где вы называете addMouseListener (это) или addMouseMotionListener (это) для DisplayArea для того, чтобы подписаться на эти события.

Ответил 29/08/2008 d 01:42
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more