如何使用JavaSwing创建点阵数字
如何为时钟项目生成5 x 7点阵式数字
这是我要找的一个例子
我手动编码每个数字中每个点的位置
是否有更好的方法创建点阵数字
更好的意思是更容易代码,更容易验证,使用现有字体或其他组件,或者其他有经验的Swing开发者可能认为是一个重要的考虑因素。p>
这个问题的其余部分是反对者的背景,他们声称我在阐述我的问题时没有付出足够的努力
因为我提供了这个问题的答案,所以我没有在问题中发布虚假的坏代码。当然,当人们表现出他们的努力时,我们很感激。在我看来,答案中的代码和文本应该是对问题的补充
几天前,当我写这篇文章时,有人提出了一个关于用点阵数字制作时钟的问题。发布问题的人提供了代码和他们创建的图片。此人创建了一个BufferedImage
,在那里他们硬编码了他4 x 7点阵数字中每个方点的位置
我对这个人在他的BufferedImage
上所做的大量工作印象深刻,所以我去了我的Eclipse,想知道如何概括他所做的工作
当我不在的时候,人们评论并结束了他的问题。当我带着我的答案回来时,那个人已经删除了他的问题
因为我有一个我认为很好的答案,所以我寻找一个合适的问题。当我找不到合适的问题时,我创建了一个问题
当然,我更关注我的答案,而不是我的问题。我真傻,我认为这个答案会为这个问题提供背景
嗯,我希望这个解释能让我更清楚地了解为什么我认为这个话题足够重要,可以提出一个问题并寻求答案
# 1 楼答案
不幸的是,您必须对每个数字中每个点的位置进行编码
但是,您可以灵活地执行此操作
这就是我的意思。5x7点阵数字可以表示为二维
int
数组。它也可以表示为boolean
数组,但0和1值的矩阵更容易直观验证举个例子。这里有一个编码零位的方法。你可以看到,它们创建了一个易于验证的视觉轮廓
我花了大约15分钟来编码所有的点阵数字矩阵
可以使用稀疏矩阵对点阵数字进行编码。不幸的是,这种想法导致更多的代码在视觉上更难验证
下面是一个点阵数字2编码为稀疏坐标矩阵的示例
在我们对所有的数字矩阵进行编码之后,我们将创建一个矩阵数组
最左边的索引是数字,从0到9。第二个索引是数字矩阵的行。第三个索引是数字矩阵的列
最后,我们扩展了
JPanel
并覆盖paintComponent
方法来实际绘制点阵数字下面是一个完整的可运行示例,演示如何通过扩展
JPanel
来创建点阵数字面板,并使用多个点阵数字面板来创建所需的GUI# 2 楼答案
不知道是否“更好”(取决于是否努力或准确性是首要考虑因素),但有一种方法可以基于数字的
Shape
计算数组以下是这台机器上默认单间距字体(粗体)版本的结果