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

Hand Cursor when hover on a button in Java AWT

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

我尝试了MouseAdapterclass的mouseEntered方法但是没有效果。

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);
        }
    });
}

提前致谢。

你的陈述Cursor.getPredefinedCursor(HAND_CURSOR); 在你的 mouseEntered 方法中没有效果, 因为你只得到了光标,但没有对它做任何事情。

解决方案比您预期的要简单。 您不需要 mouseEntered 方法。 只需在 resetButton.

上使用 class ComponentsetCursor(Cursor) 方法
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,离开时显示正常光标。

经过几次点击和尝试,我以这种方式完成了此操作:

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));
        }
    });
}