4

所以我有一个JTextArea供用户输入的内容,然后当他们单击一个按钮时,它会将其写入文本文件,我同时拥有setLineWrapsetWrapStyleWord设置trueJTextArea.

我想以文本框中出现的确切方式写入文本文件。

我试图对replace("\n", System.getProperty("line.separator"))保持String哪些内容JTextArea有效,但前提是用户在输入输入时实际上按下了返回键,但如果用户只是继续输入并点击行尾,那么它会跳转到它下面的线,replace不起作用。

我也尝试过使用 a StringBuffer,我计算了在线可以容纳多少个字符,然后在for loop inserting每行的末尾运行一个新行,因此对于第一行,我将它添加到 position 90,第二行 at 180,第三行 at270等等. 但我很快意识到这并不适用于所有情况,因为有些字符比其他字符小,例如,你可以j在一行中放置更多的 's 而不是p's。

我想做的只是想办法计算行尾,这样我就知道insert新行的位置,但我也愿意接受其他建议。谢谢。如果您认为查看我的一些代码会有所帮助,请询问。

更新 我没有实现代码来执行此操作,而是与几乎是唯一使用该程序的人之一交谈的人,他对常规记事本格式很好,我没有意识到,但只要他检查了 wordWrap 在他的记事本格式设置,这将消除他必须使用侧滚动来阅读整行,感谢您的输入

4

2 回答 2

5

使用Utilities

public static final int getRowStart(JTextComponent c, int offs)
public static final int getRowEnd(JTextComponent c, int offs)

您传递偏移量并获取行开始和结束的偏移量

于 2011-10-04T13:13:12.530 回答
1

我不知道如何,除了使用字体度量计算字长并执行文本区域已经执行的操作。

然而,这背后的目的是什么?

于 2011-10-04T13:03:30.517 回答