根据 mouseEntered 和 mouseExited 更改组件的状态
Change components' state base on mouseEntered and mouseExited
我是 Java 的新手,正在尝试学习 GUI Swing 框架。
我的目标是创建一个可以睁眼和闭眼的人脸组件 - 取决于鼠标状态(输入:睁眼,退出:闭眼)
我被结构卡住了,不知道如何将面部组件连接到 MouseListener
。
感谢对代码的任何反馈和更好地学习的建议。谢谢!
创建一个 class 来完成面部(眼睛、鼻子、嘴巴等)的所有自定义绘画。
将此面板添加到框架中。
在此面板中,您可以创建两个实例变量来表示眼睛:
private Shape leftEye = new Rectangle(170, 180, 70, 90);
private Shape rightEye = new Rectangle(320, 180, 70, 90);
还有两个变量来表示每只眼睛的状态:
private boolean isLeftEyeOpen;
private boolean isRightEyeOpen;
创建更新每只眼睛状态的方法:
public void setLeftEyeOpen(boolean isLeftEyeOpen)
{
this.isLeftEyeOpen = isLeftEyeOpen;
}
将您的 MouseListener 添加到此面板并监听 mouseMoved()
事件(不是 mouseEntered 和 mouseExited)。然后你设置每个变量的状态:
setLeftEyeOpen( leftEye.contains(e.getPoint() );
setRightEyeOpen( rightEye.contains(e.getPoint() );
repaint();
那么绘画代码中有:
if (isLeftEyeOpen)
// paint eye open
else
// paint eye closed.
阅读 Swing 教程中关于 Custom Painting 的部分,获取有助于构建代码的基本示例。
我是 Java 的新手,正在尝试学习 GUI Swing 框架。
我的目标是创建一个可以睁眼和闭眼的人脸组件 - 取决于鼠标状态(输入:睁眼,退出:闭眼)
我被结构卡住了,不知道如何将面部组件连接到 MouseListener
。
感谢对代码的任何反馈和更好地学习的建议。谢谢!
创建一个 class 来完成面部(眼睛、鼻子、嘴巴等)的所有自定义绘画。
将此面板添加到框架中。
在此面板中,您可以创建两个实例变量来表示眼睛:
private Shape leftEye = new Rectangle(170, 180, 70, 90);
private Shape rightEye = new Rectangle(320, 180, 70, 90);
还有两个变量来表示每只眼睛的状态:
private boolean isLeftEyeOpen;
private boolean isRightEyeOpen;
创建更新每只眼睛状态的方法:
public void setLeftEyeOpen(boolean isLeftEyeOpen)
{
this.isLeftEyeOpen = isLeftEyeOpen;
}
将您的 MouseListener 添加到此面板并监听 mouseMoved()
事件(不是 mouseEntered 和 mouseExited)。然后你设置每个变量的状态:
setLeftEyeOpen( leftEye.contains(e.getPoint() );
setRightEyeOpen( rightEye.contains(e.getPoint() );
repaint();
那么绘画代码中有:
if (isLeftEyeOpen)
// paint eye open
else
// paint eye closed.
阅读 Swing 教程中关于 Custom Painting 的部分,获取有助于构建代码的基本示例。