首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >想要格式化JTextArea中的文本

想要格式化JTextArea中的文本
EN

Stack Overflow用户
提问于 2013-09-12 23:21:35
回答 3查看 2.1K关注 0票数 0

我想在文本区逐行设置不同的制表符大小。有人能给我一个解决方案吗?有可能吗?我想,在文本区域键入文本后,当我按下format按钮时,想要为每行添加一个制表符。行1-无制表符行2-1制表符行3-2制表符行4-3制表符

EN

回答 3

Stack Overflow用户

发布于 2013-09-12 23:28:10

你看过API了吗?API有一个告诉你的方法:

  1. 每行的起始偏移量文本区域中有多少行。

我将让您阅读API来查找方法。

然后,您将创建一个循环并获取每行的起始偏移量。然后使用:

代码语言:javascript
运行
复制
textArea.getDocument().insertString(...);

为每行插入适当数量的制表符"\t“。

票数 3
EN

Stack Overflow用户

发布于 2013-09-12 23:30:20

我认为默认选项卡大小/长度取决于操作系统/系统设置。我相信\t在windows上默认会有4个空格....

至于在新行后面添加制表符--您可以这样做:

代码语言:javascript
运行
复制
line.replace("\n", "\n\t");

代码语言:javascript
运行
复制
line.replaceAll("\n", "\n\t");

这取决于您的用例。

如果你每次都需要跳转到更远的地方,试着这样做:

代码语言:javascript
运行
复制
String tabSpacing = "\n\t";
for (int i = 0; i < lines.length; i++) {
    String line = lines[i].replace("\n",tabSpacing);
    tabSpacing += "\t";
}

值得一提的是,换行符在某些系统环境中有所不同。例如,Windows使用crlf (回车符,换行符),而*nix只使用lf (换行符)。

因此,在java中,您可以使用\r\n,也可以只使用\n,这取决于系统环境。解决这个问题的一种方法是调用系统的属性。

代码语言:javascript
运行
复制
System.getProperty("line.separator");

这可以与以下内容结合使用:

代码语言:javascript
运行
复制
final String lineSeparator = System.getProperty("line.separator");
line.replace(lineSeparator, lineSeparator += "\t");

等等。

基于OP的注释的UPDATE -- --您可能希望查看此SO线程,了解如何将文本格式化为Java Standard Formatting for Source Code:Java library for code beautify/format

票数 3
EN

Stack Overflow用户

发布于 2013-09-12 23:34:45

尝试使用setLeftIndent并为每行指定不同的样式:

http://goo.gl/nA7opA (setleftindent手册页)

样式示例:http://goo.gl/8Yda5p

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18768255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档