我正在尝试创建一个可滚动的 JTextPane 来显示 HTML。除了尝试调整尺寸之外,我让它正常工作。看来无论我做什么,我都无法影响 Pane 的宽度。
JTextPane tp=new JTextPane();
tp.setSize(300,300);
tp.setContentType("text/html");
HTMLDocument html=(HTMLDocument) tp.getDocument();
html.putProperty("IgnoreCharsetDirective", new Boolean(true));
HTMLEditorKit htmle=(HTMLEditorKit) tp.getEditorKit();
try {
htmle.insertHTML(html,html.getLength(),content,0,0,null);
} catch (BadLocationException | IOException e) {
// Should not get here
e.printStackTrace();
}
JScrollPane scroll=new JScrollPane(tp,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setSize(200,300);
JOptionPane.showMessageDialog(null,scroll,title,JOptionPane.INFORMATION_MESSAGE);
我已经在 JTextPane 和 JScrollPane 上尝试过 setsize,但都没有影响宽度。看起来它想要将宽度设置为最长的
标签的宽度,而不是将 HTML 包裹在指定的大小内。我似乎找不到设置 JOptionPane 大小的方法,但我的理解是,如果组件大小正确,则没有必要。有人能告诉我我错过了什么吗? TIA。
最佳答案
JOptionPane
调用 pack()
。 pack()
使用其子级的 preferredSize
来决定其宽度和高度。默认情况下,JTextPane
的首选宽度是最长行的宽度。如果您想改变这种行为,
- 或者重写
JTextPane
的getPreferredSize
方法 - 或者在
JTextPane
上使用setPreferredSize
而不是setSize
关于java - 带有 HTML 的 JtextPane 太宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955791/