首页 > 解决方案 > 将鼠标悬停在Java AWT中的按钮上时的手形光标

问题描述

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

我尝试了类的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);
        }
    });
}

提前致谢。

标签: javaawt

解决方案


Cursor.getPredefinedCursor(HAND_CURSOR);mouseEntered方法中的声明没有任何效果,因为您只得到了光标,但随后什么也没做。

解决方案比您预期的要简单。你不需要你的mouseEntered方法。只需在您setCursor(Cursor) 的.ComponentresetButton

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,离开时显示正常光标。


推荐阅读