【发布时间】:2021-10-15 05:26:37
【问题描述】:
我正在尝试制作一个涉及 10x10 网格的简单游戏,其中网格中的每个单元格需要在中心包含一个大字母,在一个角落包含一个小数字。像这样:
目前,我的最佳想法是制作 100 个不同的 JLabel 组件,它们对应于从 jLabel00 到 jLabel99 的每个单元格,并使用 null 布局手动将它们分层到每个单元格的右下角一张桌子。但是,即使我将标签添加到ArrayList,这也会导致我的代码和 UI 出现大量重复(假设我可以甚至这样做)。
有人知道更优雅的解决方案吗?
【问题讨论】:
-
使用绘图 JPanel 创建网格、字母和数字。 Oracle 教程Performing Custom Painting 将向您展示如何操作。
-
一些想法被检查here。
-
提供 ASCII 艺术或一个简单的 intended 布局的单元格的最小尺寸,如果可调整大小,具有更大的宽度和高度 - 显示如何应该使用额外的空间。我最感兴趣的是“小数字”是否可能完全在大字母的最右端和最底端之外。如果是这样,使用带有四个单元格的
GridBagLayout很简单,其中只有两个(左上角和右下角)包含可见元素。 -
那个GBL建议可能look like this..
-
这是single cell。这个数字只需要一个空间来容纳一个数字,我对它看起来如何调整大小并不挑剔,甚至可以调整大小。我想如果我必须将字母保持在中心,但将数字与边框一起移动?无论如何,您的 GBL 示例看起来很完美。我会了解它,并在下次有机会从事它的时候尝试一下。万分感谢! @安德鲁汤普森