gpt4 book ai didi

java - 在屏幕上的任何位置隐藏 Java 光标

转载 作者:行者123 更新时间:2023-12-02 13:11:15 28 4
gpt4 key购买 nike

我希望隐藏特定范围的 x 和 y 位置中的光标。这是一些示例代码,代表了我想要做的事情。

if(x >= xLowerBound && x <= xUpperBound + 600 && y >= yLowerBound + 20 && y <= yUpperBound + 600)
setCursor(blankCursor);
else
setCursor(Cursor.getDefaultCursor());

现在,我知道 setCursor() 可以应用于某个对象,这很好。但是,这对我的目的不起作用。

唯一的异常(exception)是,如果我可以以某种方式创建一个全屏不可见对象,我可以在其中使用 setCursor 即使它是不可见的,如下所示:

JFrame hiddenWindow = new JFrame();
hiddenWindow.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
hiddenWindow.setExtendedState(JFrame.MAXIMIZED_BOTH);

if(x >= xLowerBound && x <= xUpperBound && y >= yLowerBound && y <= yUpperBound)
hiddenWindow.setCursor(blankCursor);
else
hiddenWindow.setCursor(Cursor.getDefaultCursor());

(注意:这不起作用。)

重申一下,我需要能够在屏幕上的任何位置使用 setCursor(),而不仅仅是限于一个对象,除非我可以创建一个不可见的屏幕大小的对象来使用 setCursor () 中。

更新1:

我想我本可以更清楚地了解我在做什么。我在屏幕中央有一个主JFrame。它不占据整个屏幕。每当光标距离 JFrame 一定距离或位于 JFrame 本身内部时,我都会将光标设置为空白光标。但是,我不知道该怎么做。

我的想法是也许使用另一个占据整个屏幕并且在其后面不可见的 JFrame ,以便我可以在该 JFrame 上使用 setCursor() 。对于它外面的空间。我希望这能进一步澄清这个问题。

最佳答案

您可以使用 MouseMotionListener 并重写其 mouseMoved 方法来检查鼠标所在位置(在组件中)并相应地设置光标类型:

public class Test extends JFrame {

Test() {
final int x1 = 100, y1 = 100, x2 = 300, y2 = 300;

BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, new Point(0, 0), "blank cursor");
Cursor defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);

addMouseMotionListener(new MouseAdapter() {

@Override
public void mouseMoved(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if (x > x1 && x < x2 && y > y1 && y < y2)
setCursor(blankCursor);
else
setCursor(defaultCursor);
}
});

setSize(new Dimension(400, 400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Test());
}
}

归功于此answer空白光标的技巧。

您无法将光标设置在 Java 窗口之外。您可以按照自己的想法使用隐形、全屏、 headless 框架,但这非常危险,并且还会拦截所有鼠标事件。实现将是相同的。

关于java - 在屏幕上的任何位置隐藏 Java 光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945110/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com