Java swing:在JDialog上设置光标

Java swing:在JDialog上设置光标,java,swing,cursor,jdialog,Java,Swing,Cursor,Jdialog,我在对话框中有一个JPanel。鼠标侦听器侦听鼠标移动,当鼠标位于特定位置时,我在面板上调用setCursor()来更改光标 这一切都很好,直到我从这个对话框中打开另一个对话框并再次关闭它。(例如:警告消息(JOptionPane)或新的CustomMake JDialog。执行此操作后,光标不会再次更改,尽管我仍然调用“setCursor” 有人知道会发生什么吗?以及如何解决这个问题吗?我尝试了下面的方法,并且在显示另一个JDialog(在Windows上,JDK 1.6.012)之后,效果很

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

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


有人知道会发生什么吗?以及如何解决这个问题吗?

我尝试了下面的方法,并且在显示另一个
JDialog
(在Windows上,JDK 1.6.012)之后,效果很好

鼠标光标在水平方向上每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);
    }
}

我找到了解决方案:问题是我有一个框架和一个对话框。框架是主框架,然后创建对话框。从对话框中,我调用
newjdialog(null,“title”);
我应该添加调用对话框,而不是使用null,因为在关闭对话框后,焦点转到主框架,虽然在我的mac上,焦点似乎在对话框上…

对我也有效,我今晚将在我的mac上测试它。并试着找出区别:(总而言之:关闭对话框将使焦点返回到其父级。如果没有定义父级,它将返回到主框架。很高兴知道。我认为
focus
指的是输入焦点,而不是鼠标焦点。