[英]Mouse - Motion Listener not working
我是这里的新手。 我在这里有一个代码,希望将JLabel的文本更改为移动鼠标的位置。 这是我的代码。
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class Draw extends JFrame{
int x;
int y;
String positions = "Positions: " + x + ", " + y;
JLabel positionsOnFrame = new JLabel(positions);
public class AL implements MouseMotionListener {
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
}
public void mouseDragged(MouseEvent e) {
positions += " dragged.";
}
}
//Constructor
public Draw() {
setTitle("Title");
setBackground(Color.BLACK);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
addMouseMotionListener(new AL());
add(positionsOnFrame);
setVisible(true);
}
public static void main(String[] args) {
new Draw();
}
}
副作用:即使我从构造函数中将颜色设置为黑色,JFrame也不会变黑。
有解决鼠标问题的方法吗? 什么都没发生! 值仅设置为0! (我尚未初始化它们,它们只是自动设置为0!)。 帮助将不胜感激!
这应该工作
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
positionsOnFrame.setText("Positions: " + x +", " + y);
System.out.println(x);
}
对于背景色,这应该起作用。
getContentPane().setBackground(Color.BLACK);
每次x
和y
更改时,字符串positions
都不会更改。 该值将与最初分配x
和y
时的值相同。
例如
String s = "hello";
String t = s;
System.out.println(t);
s = "bye";
System.out.println(t);
会两次hello
首先,未初始化的整数(例如x和y)的默认值为零。 但是依靠它不是一个好习惯。 最好即使它们仍然为零,也要显式初始化它们的值。
接下来,实际上将调用mouseMoved()回调。 但这不是在更新“ positionsOnFrame”标签的文本,而是在更新x和y坐标。 仅仅因为您使用字符串(位置)创建了标签,并不意味着标签的文本将在更改字符串时自动更改。 您必须相应地更改标签的文本。 因此,添加positionsOnFrame.setText(“ Positions:” + x +“,” + y); 在mouseMoved()回调内部将修复该部分。
最后,直接更改框架内容窗格的颜色,而不是直接更改框架的颜色:getContentPane()。setBackground(Color.BLACK);
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.