我创建了一个带有小窗口的应用程序(组合框的大小)。我需要创建一个位于窗口外的浮动面板,紧挨着JComboBox中的选定项目。 (见附图)。
我一直在阅读有关JComboBox.setRenderer(customRenderer)等的内容。但是在我沿着这条路走下去之前,我只是想知道是否有可能在窗外渲染一些东西。我怀疑它是,因为组合框本身设法在窗口外渲染它的弹出列表。
我对Swing很新,所以任何建议都会受到赞赏。
答案 0 :(得分:3)
由于Swing组件重量轻,因此无法使用自定义渲染器。也就是说,Java被赋予一个本机窗口,所有组件绘图都在该窗口中进行。在您的情况下,这是包含组合框的JFrame。
你可以做的是创建一个新的未修饰的窗口并相应地设置它的位置并在其中绘制你想要的任何内容。
编辑:当Java需要在窗口边界绘制时(如弹出消息或组合框下拉的情况)如果组件落入边界内,则使用swing轻量级机制。但是如果组件在界限范围内掉出来,它会自动被一个重量级的组件替换,该组件在活动窗口之外有自己的原生绘图表面。
答案 1 :(得分:2)
我已经使用组合框渲染器和工具提示实现了类似的想法。可以使用HTML自定义和呈现每个项目的工具提示的内容。工具提示的位置可以在项目本身之外设置,因此创建的设计与您问题中提供的设计非常相似。
以下是您的出发点:
http://www.java2s.com/Code/Java/Swing-Components/ToolTipComboBoxExample.htm