Java &引用;“白化”;除了一个组件之外的整个swing GUI

Java &引用;“白化”;除了一个组件之外的整个swing GUI,java,swing,user-interface,glasspane,jlayer,Java,Swing,User Interface,Glasspane,Jlayer,[此问题涉及] 设置:我有一个自制的“可编辑标签”组件,看起来像一个标签,但当你点击它时,它会变成一个可编辑字段,允许你编辑它。可以按Esc键取消编辑,或按住Shift键Enter键确定编辑,或单击“可编辑”字段下的相应按钮 挑战:当点击编辑时,我希望整个用户界面“变白”,除了编辑标签的区域之外,以清楚地向用户指出他应该关注的地方。您可以看看 由于问题作者的评论而更新 这类问题通常由Look'n'Feel的个人实现来解决 通常,需要屏幕的组件将为此设置客户端属性。LnF已经为该组件创建了一个呈现

[此问题涉及]

设置:我有一个自制的“可编辑标签”组件,看起来像一个标签,但当你点击它时,它会变成一个可编辑字段,允许你编辑它。可以按Esc键取消编辑,或按住Shift键Enter键确定编辑,或单击“可编辑”字段下的相应按钮


挑战:当点击编辑时,我希望整个用户界面“变白”,除了编辑标签的区域之外,以清楚地向用户指出他应该关注的地方。

您可以看看

由于问题作者的评论而更新

这类问题通常由Look'n'Feel的个人实现来解决


通常,需要屏幕的组件将为此设置客户端属性。LnF已经为该组件创建了一个呈现组件,并且已经注册了一个listenr。设置此属性时,LnF将接收的组件将触发一个事件。在活动接待处,然后在整个集装箱框架上安装一个玻璃窗格。

或者,这可以通过JXLayer项目实现。看看他们的一些演示,当一个项目被选中时,他们会模糊GUI。您必须实现自己的JXLayer视图,以使GUI变白

项目URL:


演示在头版的“入门”项下。

在我看来,有比删掉整个GUI更容易吸引用户注意的方法,难道你不能在组件周围画一个红色边框吗?@Don:是的,但是,无论你是在它周围画一个圈,还是把其余的部分涂成白色/淡出/模糊,挑战都几乎是一样的。只是需要注意一下。。。我发现执行这种焦点抓取的界面在远程桌面上几乎完全不可用,因为多次重新绘制屏幕会带来很大的延迟。如果这种影响逐渐消失,情况会更糟。纯粹的痛苦@斯托尔斯克-我不这么认为。如果您想使GUI的其余部分变白,您需要更改多个组件的外观,但是使用我建议的方法,您只需要更改一个组件的外观。谢谢,是的,我同意。再看看JXLayer。然而,我希望能有一些关于用什么“建筑”来做这样的装饰的想法。所有这些组件注册到的中心“突出显示管理器”?重新绘制和调整大小怎么样?在强光模式下调整组件或窗口的大小?我在下面看到了您的评论。关于调整大小,我相信,一旦您使用白色效果设置了视图,JXLayer自然会注意调整窗口大小和重新绘制。这假设您的增白视图查询当前零部件尺寸/位置,以确定哪些区域不需要增白。