我想用Java创建一个自定义组件。 它就像一个文本区域,但它由网格组成,当你编写时,每个字符都在一个网格单元格中。 我不知道从哪里开始。 我想象一个带有value属性的Cell类和一个带有Cell数组属性的Sheet类,以及一个在写入时指向当前单元格的指针。 编程这样的事情我没有太多问题。我最重要的是如何以图形方式向用户显示它。
有一个文字区域。每行由两行(或更多行)(上行和下行)组成。每行包含单元格。在每个单元格中都有一个字符或不同的对象(由字符或图像或其他东西表示)。上排中的Charachters被绑定/跟随相应的下部单元。像这样。
_ _ _ _ _ _ _ _ _ _ _ _ _
_|_|_|_|_|_|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 在构建,设计,编程这样的自定义工具/组件/编辑器时,正确的方法是什么?
答案 0 :(得分:4)
答案 1 :(得分:0)
我发现了一个很好的解决方案,非常适合我的目的: 我将在第一篇文章中解释的方法是创建自定义gui组件的方式是扩展JPanel并实现KeyboardListener(如果需要,还可以实现MouseListener)。我创建了一个Row类和一个Pointer类,其中包含了我的主要组件类。 基于我需要的观察者的图形是通过重载JPanel的paintComponent方法完成的。 显然,为了处理键盘和鼠标操作,您只需要实现KeyboardListener和MouseListener方法(它们都是两个接口)。
如果有人感兴趣并要求进一步解释,我可以提供类图或其他内容。