将鼠标悬停在Java AWT中的按钮上时的手形光标

时间:2018-12-21 06:11:46

标签: java awt

我已经在AWT中创建了一个名为“重置”的按钮。当鼠标悬停在此按钮上时,我希望光标为手形光标。

我尝试了mouseEntered类的MouseAdapter方法,但是没有效果。

void createResetButton() {
    Button resetButton = new Button("Reset");
    resetButton.setBounds(300, 335, 100, 40);
    add(resetButton);
    resetButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            usernameTextField.setText(null);
            passwordTextField.setText(null);
            invalidMessage.setVisible(false);   
        }

        @Override
        public void mouseEntered(MouseEvent e) {
            Cursor.getPredefinedCursor(HAND_CURSOR);
        }
    });
}

谢谢。

2 个答案:

答案 0 :(得分:0)

您的声明Cursor.getPredefinedCursor(HAND_CURSOR); 在您的mouseEntered方法中没有任何作用, 因为只得到了光标,却什么也没做。

该解决方案比您预期的要简单。 您不需要mouseEntered方法。 只需在Component上使用类resetButton的{​​{3}}方法。

void createResetButton() {
    Button resetButton = new Button("Reset");
    resetButton.setBounds(300, 335, 100, 40);
    add(resetButton);
    resetButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    resetButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            usernameTextField.setText(null);
            passwordTextField.setText(null);
            invalidMessage.setVisible(false);   
        }
    });
}

然后,AWT将为您完成其余工作:当鼠标移至时显示手形光标 输入resetButton,并在离开时显示普通光标。

答案 1 :(得分:0)

经过几次尝试和试验,我是这样完成的:

void createResetButton() {
    Button resetButton = new Button("Reset");
    resetButton.setBounds(300, 335, 100, 40);
    add(resetButton);
    resetButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            usernameTextField.setText(null);
            passwordTextField.setText(null);
            invalidMessage.setVisible(false);   
        }
        @Override
        public void mouseEntered(MouseEvent e) {
            resetButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        }
    });
}