1

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

替代文字

我一直在阅读有关 JComboBox.setRenderer(customRenderer) 等的信息。但在我走这条路之前,我只是想知道是否有可能在窗口外渲染一些东西。我怀疑是这样,因为组合框本身设法在窗口外呈现它的弹出列表。

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

4

2 回答 2

3

由于 Swing 组件是轻量级的,因此使用自定义渲染器是不可能的。也就是说,Java 有一个本地窗口,所有组件的绘制都在该窗口中进行。在您的情况下,这是包含组合框的 JFrame。

不过,您可以做的是创建一个新的未装饰窗口并相应地设置它的位置并在其中绘制您想要的任何内容。

编辑:当 Java 需要在它的窗口边界之外进行绘制时(例如弹出消息或组合框下拉的情况),如果组件落在边界内,它使用摆动轻量级机制。但是,如果组件超出边界,它会自动替换为 awt 重量级组件,该组件在活动窗口之外具有自己的本机绘图表面。

于 2009-09-03T23:17:47.980 回答
2

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

这是您的起点:

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

于 2009-09-04T01:10:56.410 回答