在每篇文章中回答一个问题"如何将字符串附加到JEditorPane?" 是这样的
jep.setText(jep.getText + "new string");
Run Code Online (Sandbox Code Playgroud)
我试过这个:
jep.setText("<b>Termination time : </b>" +
CriterionFunction.estimateIndividual_top(individual) + " </br>");
jep.setText(jep.getText() + "Processes' distribution: </br>");
Run Code Online (Sandbox Code Playgroud)
结果我得到了"终止时间:1000"而没有"进程分发":
为什么会这样?
有没有办法为JTextArea创建水平居中的文本,就像使用JTextField一样?
setHorizontalAlignment(JTextField.CENTER);
Run Code Online (Sandbox Code Playgroud)
有没有办法可以用多行文本区域完成同样的事情?我用JTextArea找不到它的方法,那么还有其他选择吗?的JTextPane?如果是这样,怎么样?
如何JTextPane在用户输入时更改特定单词的颜色?我应该覆盖JTextPane paintComponent方法吗?
我可以将一些文本突出显示为JTextPane从值开始并从另一个值结束,如下所示但是使用黄色?
""JTextPane 突出显示文字""
谢谢.
在最多6个Java的所有版本中,放置在JScrollPane中的JTextPane的默认行为是:如果可能,在字边界处换行.如果没有,那么无论如何都要包装它们.
在JDK 7中,默认行为似乎是:如果可能,在字边界处换行.如果没有,只需扩展JTextPane的宽度(永远不要换长字).
这很容易重现,这是一个SSCCE:
public class WrappingTest extends JFrame
{
public static void main ( String[] args )
{
new WrappingTest();
}
public WrappingTest ()
{
setSize(200,200);
getContentPane().setLayout(new BorderLayout());
JTextPane jtp = new JTextPane();
JScrollPane jsp = new JScrollPane(jtp);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(jsp,BorderLayout.CENTER);
setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
只需在JDK 6和JDK 7中运行它,写一些小字,然后写一个长字,你就会看到差异.
我的问题很简单...... JDK 7中的新默认行为完全混淆了我的程序(他们应该更加小心Oracle更改这种默认值......它们似乎并不重要但是当你使用JTextPane显示时通常包含非常长的字母串的数据,它们并不是那么不重要 - 实际上我要提交错误报告,但是我想在/如果它们不解决它的情况下有一个解决方法).有什么方法可以回到以前的行为?
请注意,我已经检查了相关问题的答案.如何在JTextPane中实现自动换行,以及如何使其包装不带空格的字符串?但是它没有回答这个问题 - 它提供了一种使JTextPane包装完全不考虑空白的方法,但对我来说,如果可能的话,所需的行为是在空白处分割行,如果不可能的话,在其他地方(如以前的Java)版本).
我想有一个带滚动条的JTextPane,我该怎么办?谢谢.
任何人都可以帮我简单的日志,我必须在第一行添加选择颜色的JTextPane日志消息(绿色确定,红色失败).怎么做到这一点?
基本上,我有一个JTextPane来保存一些我希望样式的文本.JTextArea对我来说会更好用但是我告诉你不能在这些文本中设置样式吗?
但是,JTextPane似乎没有正确的样式.例如,只返回包含HTML的以下代码:
public static void main(String[] args) {
JFrame j = new JFrame("Hello!");
j.setSize(200,200);
JTextPane k = new JTextPane();
k.setText("<html><strong>Hey!</strong></html>");
j.add(k);
j.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在用户与界面交互时在JTextPane中设置一些文本的样式,但到目前为止,它只返回HTML仍在的字符串!救命!
我已经搜索了这个答案的高低,并且空白了.
我需要使用一个页脚打印JTextPane的内容,该页脚显示"<m>页面的页面<n>".在Java中似乎不可能做这个简单的功能.
当我得到Printable时,我可以设置页脚打印页码,例如
String header = "whatever";
String footer = " Page - {0}";
printText(textPane.getPrintable(new MessageFormat(header),
new MessageFormat(footer)));
但是,在调度打印机对话框之前,似乎无法找到将要打印的总页数.我认为这是因为该对话框用于在页面发送到打印机之前格式化页面.打印机对话框始终显示只有一(1)页.
所以,我开始编写一个例程,它将遍历JTextPane文档并通过从print()方法中的PageFormat获取可视区域来计算页面,然后使用每行的高度(fontsize)来计算每行中的行数.页面,然后计算页数.eg
int maxh = (int) pf.getImageableHeight ();
Element section = doc.getDefaultRootElement();
for (int i=0; i<paraCount; i++)
{
Element e = section.getElement(i);
// Get the attributeSet for this paragraph (Element)
// The attributeSet contains the Styles, which contain
// the fonts etc.
AttributeSet attrs = e.getAttributes();
int fontsize = StyleConstants.getFontSize(attrs);
// .... add up the lines and count filled pages ...
} … 关于我正在制作的一些简单的控制台,我有一个问题.我知道可以setText()使用之前设置的函数将html内容添加到JTextPane setContentType("text/html");.但是对于我的应用程序的需要,我需要直接使用javax.swing.text.Document,我得到了getDocument()函数(例如,删除行并附加新行,是的,它是我正在制作的控制台,我已经在之前的StackOverflow问题中看到了几个例子,但它们都没有满足我的需求).所以,我想要的是将HTML插入到文档中并在我的JTextPane上正确呈现它.问题是当我用insertString()方法(属于文档)添加HTML内容时,JTextPane没有渲染它,在输出中我看到所有的html标记.有没有办法让这个工作正常?
这就是我插入文本的方式:
text_panel = new JTextPane();
text_panel.setContentType("text/html");
//...
Document document = text_panel.getDocument();
document.insertString(document.getLength(), line, null);
text_panel.setCaretPosition(document.getLength());
Run Code Online (Sandbox Code Playgroud)