根据我在IT部门的最终项目,我有问题。我必须在不使用JTextArea(GUI Java)的情况下编写一个简单的文本编辑器(如记事本),我必须创建自己的JTextArea ..
创意/主题=自己的文字编辑器
算法=还没有任何想法
数据结构=绳索(二叉树成员)
要求=没有JTextArea的打字......
这可能吗?面板(或其他类似的东西)是否有监听器或让听众做到这一点? 简单地思考,第一步我只是想尝试在面板上打字,绝对需要算法,但到目前为止我还没有得到正确的算法..这可能吗?
我的想法是,对于将输入存储到树中的文本..是否为我的数据结构的绳索(二叉树的成员)?
感谢您的帮助...
答案 0 :(得分:5)
这是可能的。
按照您的提及JPanel
附加KeyListener
和MouseListener
。
您需要一个模型(Document
)。对于最简单的情况,可以是StringBuilder
,您可以在其中添加内容并显示StringBuilder
内容。
您需要插入位置(int字段)来指示编辑应该发生的位置。
您需要使用字段字段来保留要在编辑器中使用的所有字体信息。
覆盖paintComponent()
并使用FontMetrics
来衡量文字并计算必要的宽度/高度。首先,我将创建一个没有换行的文本区域。
实现viewToModel / modelToView方法。对于给定的插入位置,它们应计算给定x,y和x,y的插入符号的位置。