如何在 Java 中向 JComboBox 添加分隔符?
我有一个 JComboBox 并且希望在元素列表中添加分隔符。 我如何在 Java 中执行此操作?
一个可以派上用场的示例场景是在制作用于字体系列选择的组合框时; 类似于 Word 和 Excel 中的字体系列选择控件。 在这种情况下,我想在顶部显示最常用的字体,然后是分隔符,最后按字母顺序显示分隔符下方的所有字体系列。
任何人都可以帮助我如何做到这一点,或者这在 Java 中是不可能的吗?
I have a JComboBox and would like to have a separator in the list of elements. How do I do this in Java?
A sample scenario where this would come in handy is when making a combobox for font-family-selection; similar to the font-family-selection-control in Word and Excel. In this case I would like to show the most-used-fonts at the top, then a separator and finally all font-families below the separator in alphabetical order.
Can anyone help me with how to do this or is this not possible in Java?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
有一个非常简短的教程,其中包含一个示例,展示了如何在 java2s 上使用自定义 ListCellRenderer
http://www.java2s.com/Code/Java/Swing-Components /BlockComboBoxExample.htm
基本上,它涉及在列表模型中插入一个已知的占位符,当您在 ListCellRenderer 中检测到占位符时,您将返回“new JSeparator(JSeparator.HORIZONTAL)”的实例
There is a pretty short tutorial with an example that shows how to use a custom ListCellRenderer on java2s
http://www.java2s.com/Code/Java/Swing-Components/BlockComboBoxExample.htm
Basically it involves inserting a known placeholder in your list model and when you detect the placeholder in the ListCellRenderer you return an instance of 'new JSeparator(JSeparator.HORIZONTAL)'
当我编写并测试下面的代码时,您可能会得到很多更好的答案......
我不介意,因为我喜欢实验/学习(Swing 前端仍然有点绿)。
[编辑] 三年后,我不再那么绿了,我考虑了 bobndrew 的有效言论。 我对正常运行的按键导航没有任何问题(也许是 JVM 版本问题?)。 不过,我改进了渲染器以显示突出显示。 我使用了更好的演示代码。 接受的答案可能更好(更标准),如果您想要自定义分隔符,我的答案可能更灵活......
基本思想是对组合框的项目使用渲染器。 对于大多数项目,它是一个带有项目文本的简单 JLabel。 对于最后一个最近/最常用的项目,我使用自定义边框在其底部绘制一条线来装饰 JLabel。
分隔符类,可粗,可自定义颜色等。
测试类:
By the time I wrote and tested the code below, you probably got lot of better answers...
I don't mind as I enjoyed the experiment/learning (still a bit green on the Swing front).
[EDIT] Three years later, I am a bit less green, and I took in account the valid remarks of bobndrew. I have no problem with the key navigation that just works (perhaps it was a JVM version issue?). I improved the renderer to show highlight, though. And I use a better demo code. The accepted answer is probably better (more standard), mine is probably more flexible if you want a custom separator...
The base idea is to use a renderer for the items of the combo box. For most items, it is a simple JLabel with the text of the item. For the last recent/most used item, I decorate the JLabel with a custom border drawing a line on its bottom.
Separator class, can be thick, with custom color, etc.
Test class:
尝试添加此渲染器。 只需提供您希望分隔符位于上方的索引值列表即可。
Try adding this renderer. Just supply a list of index values that you want the separator to be above.
您可以使用自定义的
ListCellRenderer
来以不同的方式绘制分隔符项目。 请参阅 文档和一个小教程< /a>.You can use a custom
ListCellRenderer
which would draw the separator items differently. See docs and a small tutorial.