【问题标题】:Mouse cursor won't change when rolling over objects滚动对象时鼠标光标不会改变
【发布时间】:2017-02-13 11:40:20
【问题描述】:

我构建的 GUI 有问题。我试图在某些对象上滚动时设置不同的光标更改 - 即,悬停在按钮上时的手形光标和悬停在文本字段上时的文本光标。但是,相应的代码不起作用。我已经尝试了以下两个代码:

classArmBtn.setCursor(new Cursor(Cursor.HAND_CURSOR));

classAlcBtn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

但是,我知道光标不会改变的原因是因为这些对象位于嵌套在 JSplitPane 中的面板中。然而,JSplitPane 被禁用,因为我不希望它被允许调整大小。有没有办法覆盖一个方法并允许这些游标改变?谢谢!

【问题讨论】:

  • 通常你会在 MouseEvent.mouseEntered 中设置光标。那是你调用 setCursor 的地方吗?
  • @ControlAltDel 好吧,除非您覆盖它,否则不需要在 MouseEvent.mouseEntered 中设置它吗?我只是在我设置每个组件的属性的 setLayout() 方法中调用 setCursor。

标签: java swing user-interface mouseover jsplitpane


【解决方案1】:

但是,JSplitPane 被禁用,因为我不希望它被允许调整大小。

另一种禁用调整大小的方法是仅禁用分隔器并从拆分窗格分隔器中删除 MouseListener:

BasicSplitPaneUI ui = (BasicSplitPaneUI)splitPane.getUI();
BasicSplitPaneDivider divider = ui.getDivider();
divider.setEnabled( false );

for (MouseListener ml: divider.getListeners(MouseListener.class))
    divider.removeMouseListener( ml );

现在可以设置光标,因为组件没有被禁用。

【讨论】:

  • 这就像一个魅力,非常感谢!顺便问一下,您知道如何更改文本字段内闪烁文本光标的颜色吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2018-06-10
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多