在一个 Swing 项目中,我使用了 aJFrame
并将其分为三个部分:菜单窗格、上下文窗格和状态窗格。
状态窗格向用户显示他的操作是否成功,以及用户在执行操作时可能想知道的其他信息。例如,如果用户单击上下文菜单中的删除按钮,状态面板会指示操作是否成功完成。
状态面板的问题是它需要在一段时间后更新其状态。例如,如果用户单击另一个按钮或浏览上下文窗格中的其他页面,则状态窗格不应仍显示上次删除操作的结果。
我可以想到两种解决方法:
- 几秒钟后清除状态。
JPanels
为所有组件( 、和 ...)添加鼠标或键盘操作侦听器,JTextFields
以便它们在鼠标或键盘的活动时调用状态面板以清除状态。
虽然实现第一个选项比较简单,但还不够。我想我需要将两者结合起来。但是问题是,如果我想将这些动作侦听器添加到所有组件,这将是一种非常肮脏的方法。也许我可以将它添加到主框架。我做了(代码在下面给出),但如果只有当鼠标在框架自己的面板上移动时才有效(例如,不在上下文窗格上)
你有什么建议吗?
JFrame.this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent me) {
}
@Override
public void mouseMoved(MouseEvent me) {
Config.statusPanel.clearStatus();
}
});