2010-08-30 51 views
1

[这个问题是关于this question]“白化”整个挥杆GUI除了从一个组件

设置:我有这个家制作的“编辑标签”组件,它看起来像一个标签,但是当你点击它,它变成一个可编辑的字段,允许你编辑它。您可以按Esc键取消,或按住Shift键确认编辑 - 或点击可编辑字段下方的相应按钮。

挑战:当点击编辑时,我希望整个用户界面都是“白色”,除了编辑标签的区域,清楚地表示用户在哪里应该关注它。

+0

在我看来,将用户的注意力吸引到编辑标签上比wh出整个GUI更简单,难道你不能仅仅在组件周围画一个红色边框吗? – 2010-08-30 11:54:35

+0

@Don:好的,但是,无论你在周围画一个环,还是画出/淡出/模糊其余部分,挑战几乎完全一样。 – stolsvik 2010-08-30 12:25:03

+2

只需注意一下......我已经找到了界面由于通过多次重新绘制屏幕引起的大量延迟,执行这种焦点抓取几乎完全无法在远程桌面上使用。如果情感淡入淡出,它甚至会更糟**。纯粹的痛苦。 ;-) – 2010-08-30 14:07:14

回答

2

另外,这可以通过使用JXLayer项目来实现。看看他们的一些演示,当他们选择一个项目时,他们模糊了GUI。你将不得不实现你自己的JXLayer视图来清空你的GUI。

项目网址:https://jxlayer.dev.java.net/

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

+0

我在下面看到您的评论。关于调整大小,我相信,一旦你看到设置了JXLayer效果的视图,本质上,照顾窗口调整大小和重新绘制。这假定你的whiteout视图查询当前的组件大小/位置,以便找出什么区域不适合白板。 – Andy 2010-08-30 16:58:57

1

你可以看看在glass pane的可能用途...

修订由于问题作者的评论。

这种问题通常通过人性化的Look'n'Feel实现来解决。

通常情况下,需要屏幕的组件将为此设置一个客户端属性。为该组件创建渲染组件的LnF也注册了一个listenr。当这个属性被设置时,一个事件被组件触发,LnF将会收到。在活动接待处,玻璃窗格安装在整个集装箱框架上。

+0

谢谢,我同意。并看看JXLayer。但是,我希望能够提供一些有关“建筑”用于做这种装饰的想法。所有这些组件注册的中央“突出显示管理器”?关于重新绘制和调整大小?在高光模式下调整组件或窗口的大小? – stolsvik 2010-08-30 12:28:47