【问题标题】:Java Swing. Add custom items to scroll pane (Tile selector)爪哇摇摆。将自定义项目添加到滚动窗格(平铺选择器)
【发布时间】:2015-06-26 15:58:23
【问题描述】:

我目前正在为我正在开发的游戏开发 TiledMap 编辑器。我现在处于需要实现图块选择器的部分。我很确定我可以在画布中执行此操作并单独绘制每个图块并在所选图块周围绘制一个框但我想知道在我开始制作之前是否已经在 java swing 中实现了一种更简单、更专业的方法我自己的。

这是我想要的基本图:

图块选择器中的绿色框是单独的图块,带有粗体蓝色的框是选定的图块(只是一个基本示例,颜色对我来说无关紧要)。

附加信息:每个图块都有自己的对象,因此如果解决方案涉及 ArrayList 或其他东西,它会很好地工作。此外,我希望能够操纵选择器中是否显示哪些对象。我有一个搜索栏,我想用它来缩小显示的图块。

提前致谢,如果您需要更多详细信息,请询问。

【问题讨论】:

  • 我不能 100% 确定您在问什么,但 JList 可以很好地显示一组图块图像,并且可能是左侧图块选择器组件的候选对象。跨度>
  • 我会调查的。谢谢:)
  • 好吧,看起来不错。您如何告诉 JList 您希望显示关于列表中每个项目的内容。对于我的情况,我希望 JList 显示一个简单的图像,而不是文本,这可能吗?另外,它可以做多列的列表吗?似乎所有在线示例都只是行中的项目列表。附言我以前查过,但我不确定。编辑:再检查一下,我应该改用 JTable 吗?

标签: java swing


【解决方案1】:

JList 可以很好地显示平铺图像的集合,并且可能是左侧平铺选择器组件的候选者。

好的,看起来不错。您如何告诉 JList 您希望显示关于列表中每个项目的内容。对于我的情况,我希望 JList 显示一个简单的图像,而不是文本,这可能吗?

如果将图标添加到 JList,它们将自动正确显示。如果您需要微调显示,那么您需要按照教程和 API 编写一个 ListCellRenderer。

另外,它可以做多列的列表吗?

如果您指的是同一事物的多列,例如 4x4 网格的图像,那么 JList 可以很好地处理这个问题,您可以调用 setLayoutOrientation(JList.HORIZONTAL_WRAP)(如果需要,也可以调用垂直换行)。如果您的意思是每列都包含不同的数据类型,例如图像、文本、复选框,那么请使用 JTable。

【讨论】:

  • 感谢您的帮助,我会尝试一下,如果遇到问题会回来。
  • 哇,太好了!令我惊讶的是,Icon 是一个接口,这意味着我可以让我的Tile 类实现它,添加方法,绘制图标,我什至可以非常轻松地获得选定的图块!谢谢!一个问题。它只在列表中显示 2 列图块,而它可能适合 6,也许 7。我正在使用 gridbaglayout,似乎这可能会影响它。
  • 编辑:我找到了新问题的解决方案。解决方案是将 JList 的 visibleRowCount 设置为 -1 而不是 8。再次感谢大家的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
相关资源
最近更新 更多