【发布时间】:2013-12-06 09:55:41
【问题描述】:
我一直在研究 Java 中的鼠标运动侦听器,但无法完全解决它,因为我希望对象朝着屏幕上鼠标指向的方向移动,但不幸的是,当鼠标位于小程序窗口内时,对象仅向一个方向移动。下面是我的代码..
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseOver extends Applet implements KeyListener, MouseListener,
MouseMotionListener {
private int[] Xpoints = { 0, -5, 5 };
private int[] Ypoints = { -10, -2, -2 };
private double xpos, ypos;
private Polygon poly;
int polyrot = 0;
private int width; // !! added
private int height; // !! added
public void init() {
poly = new Polygon(Xpoints, Ypoints, Xpoints.length);
addKeyListener(this);
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
AffineTransform id = new AffineTransform();
width = getSize().width;
height = getSize().height;
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.RED);
g2d.draw(poly);
g2d.translate(width / 2, height / 2);
g2d.rotate(Math.toRadians(polyrot));
g2d.scale(5, 5);
}
public void keyReleased(KeyEvent k) {
}
public void keyTyped(KeyEvent k) {
}
public void keyPressed(KeyEvent k) {
switch (k.getKeyCode()) {
case KeyEvent.VK_LEFT:
if (polyrot < 0) {
polyrot = 359;
polyrot++;
}
repaint();
break;
case KeyEvent.VK_RIGHT:
if (polyrot > 360) {
polyrot = 0;
polyrot--;
}
repaint();
break;
}
}
public void mouseEntered(MouseEvent m) {
}
public void mouseExited(MouseEvent m) {
}
public void mouseReleased(MouseEvent m) {
}
public void mouseClicked(MouseEvent m) {
}
public void mousePressed(MouseEvent m) {
switch (m.getButton()) {
case MouseEvent.BUTTON1:
if (polyrot < 0) {
polyrot = 359;
polyrot--;
}
repaint();
break;
case MouseEvent.BUTTON2:
if (polyrot > 360) {
polyrot = 0;
polyrot++;
}
repaint();
break;
}
}
public void mouseMoved(MouseEvent e) {
xpos = getX();
if (xpos < 0) {
polyrot--;
} else if (xpos > 0) {
polyrot++;
}
repaint();
// !! break; // Doesn't belong here
}
@Override
public void mouseDragged(MouseEvent e) {
// You forgot this method
}
}
【问题讨论】:
-
您的代码没有任何缩进,这让我们几乎无法阅读、理解和调试。请重新格式化您发布的代码,给它适当的缩进,通常每个块 3 个空格,并确保同一块上的所有代码处于相同的缩进级别。非常感谢您在这方面的合作,并可能会增加您获得体面和及时答复的机会。
-
如果这是你对幽默的看法,那就太不受欢迎了。
-
好吧,我不是在开玩笑。那么代码可以正确阅读我不知道你为什么感到困难?
-
现在我希望它是什么预期的?
-
我已尝试添加您遗漏的字段和变量,以便您的代码现在可以编译。我现在缩进了你的代码。同样,请记住,我们是志愿者,在此处寻求建议时,您应该努力使您的代码具有可展示性和可读性。
标签: java applet awt keylistener mouselistener