我的鼠标光标出了点问题。我使用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的第一篇文章。
答案 0 :(得分:3)
if (sList.getCurrentShapeType() == "rec") {
不确定它是否能解决您的问题,但不能使用" =="比较对象。
相反,您应该使用equals(...)
方法。
if ("rec".equals(sList.getCurrentShapeType()) {
注意:我更改了测试的顺序,因此您不必担心getCurrentShapeType()方法返回空值。
else if (k.getBorderByPoint(e.getPoint()) == 4)
另外,我不知道你的getBorderByPoint()方法做了什么,但为什么要将它与整数值进行比较。我们不知道" 4"手段。不要使用"魔术数字。而是创建变量,如:CURSOR_NORTH。或者更好的是,为什么不从该方法返回光标,因此您不必检查该值两次。