Java: JTextPane 中是否有任何方法与 JTextArea 中的append() 执行相同的操作?
该程序允许用户在文本字段中输入命令,然后他们输入的任何内容都会显示在文本区域中。如果是诸如 yes 之类的关键字,它将变成绿色,但是我无法在文本区域中仅将一行文本设置为绿色,因此我需要使用文本窗格。
问题是,如果我使用文本窗格,我将无法再使用追加方法。
private final static String newline = "\n";
private void enterPressed(java.awt.event.KeyEvent evt) {
int key = evt.getKeyCode();
if (key == KeyEvent.VK_ENTER)
{
String textfieldEnterdValue = textfield1.getText().toString();
this.TextArea1.append("> "+tb1EnterdValue+newline);
this.tb1.setText("");
if((tb1EnterdValue.equals("yes")) )
{
TextArea1.setForeground(Color.green);
}
}
The program lets the user type in a command in a textfield then whatever they typed will show in the text area. If it is keywords such as yes it will turn green, however I cannot set just one line of text green in a text area so I need to use a text pane.
The problem is that if I use a text pane I can't use the append method anymore.
private final static String newline = "\n";
private void enterPressed(java.awt.event.KeyEvent evt) {
int key = evt.getKeyCode();
if (key == KeyEvent.VK_ENTER)
{
String textfieldEnterdValue = textfield1.getText().toString();
this.TextArea1.append("> "+tb1EnterdValue+newline);
this.tb1.setText("");
if((tb1EnterdValue.equals("yes")) )
{
TextArea1.setForeground(Color.green);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
JTextPane 使用 Document 作为模型。这是支持使用多种颜色和字体所必需的。
因此,要附加到 JTextPane,您需要修改文档。
可以使用以下方法:
insertString(int pos, 字符串值, AttributeSet att)
删除( int pos, int length)
例如,这会将
value
附加到文档末尾。此外,您可能需要调用 scrollRectToVisible(Rectangle) 的结果为 modelToView(int) 确保新添加的行显示在屏幕上。
JTextPane uses Document as a model. This is necessary to support the use of multiple colors and fonts.
So, to append to a JTextPane, you need to modify the Document.
The following methods are available :
insertString(int pos, String value, AttributeSet att)
remove(int pos, int length)
For example, this will append
value
to the end of the document.Additionally, you may want to call scrollRectToVisible(Rectangle) with the result of modelToView(int) to ensure the newly added line is on screen.
我认为您需要直接在基础文档上执行此操作。
像这样的东西:
I think you'll need to do that directly on the underlying document.
Something like this: