나의(Java/스윙)MouseListener 지 않을 듣고,나에게 도움 그 이유
-
09-06-2019 - |
문제
그래서 나는 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 프로그래머(이것은 부분의 할당)하지만 내가 볼 수 없습니다 눈부시게 아무것도 명백합니다.할 수 있는 똑똑한 사람보다는 나는 아무것도 볼?
해결책
이 를 구현하 mouselistener,mousemotionlistener 그냥할 수 있습 displayArea 클래스 일부를 듣고,정의,스윙 구성 요소의 마우스 이벤트입니다.이 있을 명시적으로 정의해야한 듣습니다.그래서 나는 가 추가할 수 있습니다 이런 생성자:
this.addMouseListener(this);
this.addMouseMotionListener(this);
다른 팁
나는 보지 않는 곳에 코드를 호출할 addMouseListener(이)또는 addMouseMotionListener(이)에 대한 DisplayArea 하기 위해서는 가입할 수 있는 방안을 연구한다.
나는 보지 않는 모든 코드를 등록하려면 여기를 마우스 청취자입니다.당신이 전화를 addMouseListener(이)및 addMouseMotionListener(이)에 DisplayArea.
제휴하지 않습니다 StackOverflow