2009-09-03 87 views
1

我创建了一个带有小窗口(组合框大小)的应用程序。我需要创建一个位于窗口之外的浮动面板,位于JComboBox中所选项目旁边。 (见附图)。Swing:JComboBox中选定项目旁边的浮动面板

alt text

我一直在阅读有关的JComboBox.setRenderer(customRenderer)等,但只是想在我走这条路,无论是在所有可能呈现窗口之外的东西。我怀疑它是,因为组合框本身设法在窗口外面显示它的弹出列表。

我对Swing很陌生,所以任何建议,将不胜感激。

回答

3

自定义渲染器无法实现,因为Swing组件重量轻。也就是说,Java被赋予一个本地窗口,并且所有的组件绘图都在该窗口中进行。在你的情况下,这是包含组合框的JFrame。

虽然你可以做的是创建一个新的未修饰窗口并相应地设置它的位置,并在里面绘制任何你想要的。

编辑:如果Java需要在外部绘制它的窗口边界(如弹出消息或组合框下拉菜单的情况下),如果组件落入边界内,则使用摆动轻量级机制。但是,如果组件落在边界外面,它会被一个awt重量较大的组件自动替换,该组件在活动窗口之外拥有自己的原生绘图表面。

2

我已经实现了类似的想法,使用组合框渲染器和工具提示。每个项目的工具提示内容都可以使用HTML进行自定义和渲染。工具提示的位置可以设置在项目本身之外,从而创建与您的问题中呈现的设计非常相似的设计。

这里是起点,为您提供:

http://www.java2s.com/Code/Java/Swing-Components/ToolTipComboBoxExample.htm

+0

感谢尤金。你知道是否可以将工具提示设置为在窗口外浮动,就像我的图像一样? – Ben 2009-09-04 01:41:31

+0

我认为这应该是可能的 – 2009-09-04 05:16:25