JList 项目中的自动换行
我有一个 JList
,其项目名称很长,导致水平滚动条出现在滚动窗格中。
无论如何,我可以自动换行,以便整个项目名称显示在两行中,但可以一键选择吗? IE 中,它仍应表现为单个项目,但显示为两行。
这是我在看到下面的示例后所做的事情,
我向项目 MyCellRenderer 添加了一个新类,然后在列表的创建后代码中添加了 MyList.setCellRenderer(new MyCellRenderer(80));
。我还有什么需要做的吗?
I have a JList
with very long item names that cause the horizontal scroll-bar to appear in scroll-pane.
Is there anyway that I can word wrap so that the whole whole item name appears in 2 rows yet can be selected in one click? I.E it should still behave as a single item but be displayed in two rows.
Here is what I did after seeing the example below
I added a new class to my project MyCellRenderer and then I went added MyList.setCellRenderer(new MyCellRenderer(80));
in the post creation code of my List. Is there anything else I need to do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,使用安德鲁的代码,我想出了这样的东西:
Yep, using Andrew's code, I came up with something like this:
您还可以动态计算宽度(而不是固定值):
因此,如果面板调整列表大小,换行仍然正确。
更新
结果如下所示:
You can also compute dynamically the width (instead of a fixed value):
So if the panel resizes the list, wrapping remains correct.
Update
And the result looks like this:
这还可以更容易完成。您可以通过 ListModel 的构造函数创建 JList。在 CustomListModel 扩展 AbstractListModel 中, getElementAt() 方法可以返回具有相同 html 格式文本的 String 。因此,这种方式无需修改单元格渲染器即可实现相同的效果。
It can be done even easier. You can create JList by consatructor with ListModel. In CustomListModel extends AbstractListModel, getElementAt() method can returns String with same html-formatted text. So this way do the same without cell renderer modification.