MouseMove事件更改光标并不起作用

时间:2015-09-25 19:27:44

标签: java swing user-interface awt mouse

我的鼠标光标出了点问题。我使用this.setCursor()将它设置在JPanel的MouseMotion事件中,但它没有被更改。 在我的桌面上退出窗口并返回内部后,光标将被任何动作更改。

鼠标代码JPanel的事件是:

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的第一篇文章。

1 个答案:

答案 0 :(得分:3)

if (sList.getCurrentShapeType() == "rec") {

不确定它是否能解决您的问题,但不能使用" =="比较对象。

相反,您应该使用equals(...)方法。

if ("rec".equals(sList.getCurrentShapeType()) {

注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值。

else if (k.getBorderByPoint(e.getPoint()) == 4)

另外,我不知道你的getBorderByPoint()方法做了什么,但为什么要将它与整数值进行比较。我们不知道" 4"手段。不要使用"魔术数字。而是创建变量,如:CURSOR_NORTH。或者更好的是,为什么不从该方法返回光标,因此您不必检查该值两次。