进来一直研究swing的内容,在看到jrootpanel的glasspanel的时候没有理解,今天看代码看到了这一部分,终于对于他的意义有所理解了。
rootpanel有GlassPanel和LayeredPanel组成,其中的LayeredPanel有位于地段的Menubar和下面的ContentPanel组成。
JRootPane
所使用的自定义 LayoutManager
可确保:
-
glassPane
填充了JRootPane
的整个可查看区域(边界 - insets)。 -
layeredPane
填充了JRootPane
的整个可查看区域。(边界 - insets) -
menuBar
位于layeredPane
的上边缘。 -
contentPane
填充了整个可查看区域,减去menuBar
(如果有)。
其中glassPane 位于所有窗格之上,以便能够截取鼠标移动。这样我们可以在dnd的过程中,在rootpanel中设定一个panel,这样就可以覆盖掉下面的所有的控件,等拖拽结束以后将glasspanel删除,其他的控件也就全部没有覆盖了,这样有什么好处呢,覆盖了以后,鼠标事件就完全被屏蔽了,避免以下不必要的鼠标监听处理,多有意义的事情啊。
这几天在开发一个office2007风格的界面,现在还没有成型了,上传一个图片,后续功能开发主要在属性面板,和制作可以拖拽和停靠在右边的窗口,先上传一个中间的产品。颜色和excel2007基本相同,因为直接是从他上面截取的颜色值。