gpt4 book ai didi

java - swing:在 JDialog 上设置光标

转载 作者:行者123 更新时间:2023-12-02 08:34:31 25 4
gpt4 key购买 nike

我在对话框中有一个 JPanel。 MouseListener 监听鼠标移动,当鼠标位于特定位置时,我在面板上调用 setCursor() 来更改光标。

这一切都运行良好,直到我从此对话框中打开另一个对话框并再次关闭它。 (例如:警告消息(JOptionPane),或新的自定义 JDialog。执行此操作后,光标不会再次更改,尽管我仍然调用“setCursor”。

有人知道会发生什么吗?又该如何解决呢?

最佳答案

我尝试了以下方法,并且在显示另一个 JDialog(在 Windows 上,JDK 1.6.0_12 上)之后,它工作得很好。

鼠标光标在水平方向上每 50 个像素改变一次,单击 JPanel 打开模态 JDialog。再次关闭它,鼠标光标仍然发生变化。

public class DialogCursorTest extends JDialog{
public DialogCursorTest() {
final JPanel panel = new JPanel();
panel.addMouseMotionListener(new MouseMotionAdapter() {
Cursor handCursor = new Cursor(Cursor.HAND_CURSOR);
@Override
public void mouseMoved(MouseEvent e) {
if(e.getX() % 100 > 50) {
if(panel.getCursor() != handCursor) {
panel.setCursor(handCursor);
}
}
else {
if(panel.getCursor() == handCursor) {
panel.setCursor(Cursor.getDefaultCursor());
}
}
}
});

panel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new JDialog(DialogCursorTest.this, "Test", true).setVisible(true);
}
});

getContentPane().add(panel);
}

public static void main(String[] args) {
DialogCursorTest test = new DialogCursorTest();
test.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
test.setSize(400, 300);
test.setVisible(true);
}
}

关于java - swing:在 JDialog 上设置光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309740/

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