java - 在 JTextArea 中使用换行,将行换行到 JTextArea 中的特定位置
问题描述
我有一个JTextArea
从另一个获取文本JTextArea
并显示该文本的图像,如下图所示:
我希望 JTextArea 将 rahul 的行换行,如上图所示。下面是我较小的代码,JTextArea
其中的文本显示在较大的JTextArea
.
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
String str=MainFrame.un+" ("+sdf.format(new Date())+") :"+txtSend.getText();
DataServices.send(runm+":"+str); // for sending this to its socket
txtView.append("\n\n\t\t\t\t\t"+str);
txtSend.setText("");
txtSend.requestFocus(true);
解决方案
我希望它从写 rahul 的位置开始,而不是从文本区域的左边缘开始
这在 JTextArea 中不受支持。JTextArea 用于显示简单的文本。
您可以使用 JTextPane。它允许您控制文本的属性,其中一个属性可以是左缩进。因此,您可以将单行的段落属性设置为按特定数量的像素缩进。
因此,您只需在添加文本行时设置左缩进,而不是使用制表符来缩进文本。
另请注意,JTextPane 没有实现 append 方法,因此您需要通过将文本直接添加到 Document 来创建自己的方法:
textPane.getDocument.insertString(...);
所以基本逻辑是:
StyledDocument doc=(StyledDocument)textPane.getDocument();
doc.insertString(...);
SimpleAttributeSet attrs = new SimpleAttributeSet();
//StyleConstants.setFirstLineIndent(attrs, 50);
StyleConstants.setLeftIndent(attrs, 50);
doc.setParagraphAttributes(0,doc.getLength(),attrs, false);
这将更改您刚刚添加到文本窗格的文本行的缩进。
推荐阅读
- python - 如何确保位级别的持久 sklearn 模型
- java - 在文字冒险游戏中移动
- java - 当我滚动浏览我的 webview 应用程序时,我的应用程序冻结了
- javascript - React - 为什么函数忽略等待?
- css - 如何使用 Thymeleaf 动态添加类?
- python - 在线程python前面打印任务号?
- c++ - 如何在 UWP windows.gaming.input 命名空间中使用 Racing Wheel 类
- python - Matplotlib 堆积条形图,渐变效果很小
- python - 在 Numpy 中生成强对称矩阵
- google-app-engine - 将应用引擎标准连接到另一个 gcp 项目的私有 ip vm