我使用JEditorPane
来显示一些文字。问题是我无法添加多行。
我的代码现在
public class Window extends JFrame {
private JEditorPane text = new JEditorPane();
public Window() {
setLayout(new BorderLayout());
setTitle("test");
setSize(500, 350);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
text.setEditable(false);
text.setContentType("text/html");
text.setText("<b>Some bold text</b><br>");
text.setText(text.getText() + "<br>Some text that is not bold but here <b>it is</b>");
getContentPane().add(text, BorderLayout.CENTER);
setVisible(true);
}
}
当它在同一行时没有问题,<br>
创建一个新行。但是,如果是多个陈述,我就无法让它发挥作用。
它需要在多个语句中,因为稍后每个语句都将成为if
条件。
如何让它做多行?
答案 0 :(得分:1)
问题是JEditorPane将文本包装在<html><body> ... </body></html>
个元素中。例如,执行以下操作时:
text.setText("<b>Some bold text</b><br>");
System.out.println("text content:\n" + text.getText());
你得到这个输出:
text content:
<html>
<head>
</head>
<body>
<b>Some bold text</b><br>
</body>
</html>
因此,您需要在包装之前存储先前的文本,或者在</body>
例如,在一个非常简单的实现中,您可以将以下属性和方法添加到您的类中:
private StringBuilder sb = new StringBuilder();
public String appendText(String text) {
return sb.append(text).toString();
}
然后,您可以更改以前的语句以将文本设置为:
...
text.setText(appendText("<b>Some bold text</b><br>"));
text.setText(appendText("<br>Some text that is not bold but here <b>it is</b>"));
...
会产生所需的行为: