Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用JTextArea就可以用java构建一个简单的文本编辑器吗?_Java_Swing_Textarea_Text Editor - Fatal编程技术网

不使用JTextArea就可以用java构建一个简单的文本编辑器吗?

不使用JTextArea就可以用java构建一个简单的文本编辑器吗?,java,swing,textarea,text-editor,Java,Swing,Textarea,Text Editor,根据我在IT系的最后一个项目,我有一些问题。。我必须在不使用JTextArea(GUI Java)的情况下制作一个简单的文本编辑器(如记事本),我必须制作自己的JTextArea Idea/Topic=自己的文本编辑器 算法=还不知道 数据结构=Rope(二叉树的成员) 要求=在没有JTextArea的情况下键入 有可能吗?一个面板(或类似的东西)可以有一个监听器,或者让监听器来做吗? 简单地想一下,第一步我只想试着在面板上打字,绝对需要算法,但到目前为止我还没有得到正确的算法。。可能吗 我的想

根据我在IT系的最后一个项目,我有一些问题。。我必须在不使用JTextArea(GUI Java)的情况下制作一个简单的文本编辑器(如记事本),我必须制作自己的JTextArea

Idea/Topic=自己的文本编辑器

算法=还不知道

数据结构=Rope(二叉树的成员)

要求=在没有JTextArea的情况下键入

有可能吗?一个面板(或类似的东西)可以有一个监听器,或者让监听器来做吗? 简单地想一下,第一步我只想试着在面板上打字,绝对需要算法,但到目前为止我还没有得到正确的算法。。可能吗

我的想法是,对于im输入的文本,它存储在一棵树上。。是我的数据结构的绳子(二叉树的成员)吗

谢谢你的帮助

这是可能的

如您所述使用
JPanel
附加
keylister
mouselister

您需要一个模型(
文档
)。对于最简单的情况,它可以是例如
StringBuilder
,您可以在其中添加内容并显示
StringBuilder
内容

您需要插入符号位置(int字段)来指示编辑应该发生的位置

您需要字体字段来保存编辑器中要使用的所有字体信息

覆盖
paintComponent()
并使用
FontMetrics
测量文本并计算必要的宽度/高度。首先,我将创建一个没有换行的文本区域

实现viewToModel/modelToView方法。他们应该计算给定x,y的插入符号位置,以及给定插入符号位置的x,y。

这是可能的

如您所述使用
JPanel
附加
keylister
mouselister

您需要一个模型(
文档
)。对于最简单的情况,它可以是例如
StringBuilder
,您可以在其中添加内容并显示
StringBuilder
内容

您需要插入符号位置(int字段)来指示编辑应该发生的位置

您需要字体字段来保存编辑器中要使用的所有字体信息

覆盖
paintComponent()
并使用
FontMetrics
测量文本并计算必要的宽度/高度。首先,我将创建一个没有换行的文本区域


实现viewToModel/modelToView方法。他们应该计算给定x,y的插入符号位置,以及给定插入符号位置的x,y。

为什么你的教授会给你一个不可能完成的任务作为作业?这是可能的。为什么你的教授会给你一个不可能的任务作为作业?这是可能的。谢谢你的帮助。。我试试你的建议。。我认为这很容易做到。。如果我有任何问题,我会再次向StanislavL thx寻求帮助。。我试试你的建议。。我认为这很容易做到。。如果我有什么问题,我会再问。。。