1

我想用 Java 创建一个自定义组件。它就像一个文本区域,但它是由网格组成的,当你写的时候,每个字符都放在一个网格单元格中。我不知道从哪里开始。我想象一个具有 value 属性的 Cell 类和一个具有 Cell 数组属性的 Sheet 类和一个在写入时指向当前单元格的指针。我在编写这样的事情时没有太多问题。我最重要的是如何以图形方式向用户显示它。

有什么建议或参考吗?

编辑:我阅读了您的出色答案,但这并不是我想要的。当我说“由网格组成的文本区域,并且每个字符都进入网格单元格”时,这只是对我将要做的事情的简化。我会给你进一步的解释:

有一个文本区域。每行由两(或更多)行(上排和下排)组成。每行都包含单元格。在每个单元格中都有一个字符或不同的对象(由字符或图像或其他东西表示)。上排的字符绑定/跟随相应的下单元格。像这样。

_ _ _ _ _ _ _ _ _ _ _ _ _
_|_|_|_|_|_|X|_|_|_|_|_|_|
H|E|L|L|O|_|W|O|R|L|D|,|_|
_ _ _ _ _ _ _ _ _ _ _ _ _
_|_|_|_|Y|_|_|_|_|_|_|_|_|
H|O|W|_|A|R|E|_|Y|O|U|?|_|
_ _ _ _ _ _ _ _ _ _ _ _ _
_|_|_|_|_|_|_|_|_|_|_|_|_|
_|_|_|_|_|_|_|_|_|_|_|_|_|

您可以看到 X 绑定到 WORLD 的下部 W,而 Y 绑定到 ARE 的下部 A。我希望现在更清楚一点:-p 在构建、设计、编程这样的自定义工具/组件/编辑器时,正确的方法是什么?

4

2 回答 2

4

创建自定义JTable怎么样?在这里您可以找到一些开始的信息。

于 2012-08-05T18:11:51.913 回答
0

我找到了一个很好的解决方案,非常适合我的目的:我将像我在第一篇文章中解释的那样创建一个自定义 gui 组件的方法是扩展一个 JPanel 并实现一个 KeyboardListener(如果需要,还可以实现一个 MouseListener )。我也创建了一个 Row 类和一个 Pointer 类,我的主要组件类是由它们组成的。根据我需要的图形,通过重载 JPanel 的paintComponent 方法来完成该图形。显然,为了处理键盘和鼠标操作,您只需实现 KeyboardListener 和 MouseListener 方法(它们都是接口)。

如果有人感兴趣并要求进一步解释,我可以提供类图或其他东西。

于 2012-08-08T12:26:12.757 回答