Java 通过MouseMove事件更改光标不';行不通
我的鼠标光标有点问题。我用这个.setCursor()在JPanel的MouseMotion事件中设置了它,但它没有改变。 在离开窗口(例如在我的桌面上)并返回窗口后,光标将因任何运动而改变 JPanel鼠标事件的代码如下:Java 通过MouseMove事件更改光标不';行不通,java,swing,user-interface,awt,mouse,Java,Swing,User Interface,Awt,Mouse,我的鼠标光标有点问题。我用这个.setCursor()在JPanel的MouseMotion事件中设置了它,但它没有改变。 在离开窗口(例如在我的桌面上)并返回窗口后,光标将因任何运动而改变 JPanel鼠标事件的代码如下: public void mouseMoved(MouseEvent e) { this.requestFocusInWindow(); this.requestFocus(); this.cL.doMouseMoved(e); } doMous
public void mouseMoved(MouseEvent e) {
this.requestFocusInWindow();
this.requestFocus();
this.cL.doMouseMoved(e);
}
doMouseMoved方法的代码如下:
public void doMouseMoved(MouseEvent e) {
this.lastMouseEvent = e;
this.sList.setCurrentElements(e.getPoint());
this.setMovedCursor(e);
}
最后,这是setMovedCursor方法的代码:
public void setMovedCursor(MouseEvent e) {
java.awt.Cursor cu = new java.awt.Cursor(java.awt.Cursor.SW_RESIZE_CURSOR);
view.setCursor(cu);
}
(我知道这不是最好的方式)
我希望每个人都能帮助我。
对不起,有任何错误,这是我在stackoverflow的第一篇文章
if (sList.getCurrentShapeType() == "rec") {
不确定它是否能解决您的问题,但不要使用“==”来比较对象
相反,您应该使用equals(…)
方法
if ("rec".equals(sList.getCurrentShapeType()) {
注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值
else if (k.getBorderByPoint(e.getPoint()) == 4)
另外,我不知道getBorderByPoint()方法的作用,但为什么要将其与整数值进行比较。我们不知道“4”是什么意思。不要使用“幻数”,而是创建如下变量:CURSOR\u NORTH。或者更好的是,为什么不从该方法返回游标,这样就不必检查两次值
不确定它是否能解决您的问题,但不要使用“==”来比较对象
相反,您应该使用equals(…)
方法
if ("rec".equals(sList.getCurrentShapeType()) {
注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值
else if (k.getBorderByPoint(e.getPoint()) == 4)
另外,我不知道getBorderByPoint()方法的作用,但为什么要将其与整数值进行比较。我们不知道“4”是什么意思。不要使用“幻数”。而是创建如下变量:CURSOR\u NORTH。或者更好的是,为什么不直接从该方法返回游标,这样就不必检查两次值
不确定它是否能解决您的问题,但不要使用“==”来比较对象
相反,您应该使用equals(…)
方法
if ("rec".equals(sList.getCurrentShapeType()) {
注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值
else if (k.getBorderByPoint(e.getPoint()) == 4)
另外,我不知道getBorderByPoint()方法的作用,但为什么要将其与整数值进行比较。我们不知道“4”是什么意思。不要使用“幻数”,而是创建如下变量:CURSOR\u NORTH。或者更好的是,为什么不从该方法返回游标,这样就不必检查两次值
不确定它是否能解决您的问题,但不要使用“==”来比较对象
相反,您应该使用equals(…)
方法
if ("rec".equals(sList.getCurrentShapeType()) {
注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值
else if (k.getBorderByPoint(e.getPoint()) == 4)
另外,我不知道getBorderByPoint()方法的作用,但为什么要将其与整数值进行比较。我们不知道“4”是什么意思。不要使用“幻数”。而是创建如下变量:CURSOR\u NORTH。或者更好的是,为什么不直接从该方法返回光标,这样就不必检查两次值。不要使用
==
或比较字符串=代码>。请改用equals(…)
或equalsIgnoreCase(…)
方法。了解==
检查两个对象引用是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的重点。不要使用==
或比较字符串=代码>。请改用equals(…)
或equalsIgnoreCase(…)
方法。了解==
检查两个对象引用是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的重点。不要使用==
或比较字符串=代码>。请改用equals(…)
或equalsIgnoreCase(…)
方法。了解==
检查两个对象引用是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的重点。不要使用==
或比较字符串=代码>。请改用equals(…)
或equalsIgnoreCase(…)
方法。了解==
检查两个对象引用是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题所在。我确信这不是问题所在,因为当我离开窗口并用鼠标返回时,该方法将起作用。@domKi,首先修复代码,然后进行注释。那你就不用猜了。然后,如果它不起作用,发布一个适当的帖子来说明问题。我希望现在情况会好一些。@domKi,那不是一个SSCCE
。使用JPanel创建JFrame,并将MouseMotionListener添加到面板中。发布编译和执行的正确SSCCE需要15-20行。很可能你会在创建SSCCE时发现问题。我确信这不是问题所在,因为当我离开窗口并用鼠标返回时,该方法会起作用。@domKi,首先修复代码,然后进行注释。那你就不用猜了。然后,如果它不起作用,发布一个适当的帖子来说明问题。我希望现在情况会好一些。@domKi,那不是一个SSCCE
。使用JPanel创建JFrame,并将MouseMotionListener添加到面板中。发布编译和执行的正确SSCCE需要15-20行。很可能您会在创建SSCCE时发现问题。我确信这不是问题所在,因为当我离开窗口并用鼠标返回时,该方法会起作用。@domKi,首先修复代码并