java - 带有 HTML 的 JtextPane 太宽

标签 java html jscrollpane jtextpane

我正在尝试创建一个可滚动的 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);

我已经在 J​​TextPane 和 JScrollPane 上尝试过 setsize,但都没有影响宽度。看起来它想要将宽度设置为最长的

标签的宽度,而不是将 HTML 包裹在指定的大小内。我似乎找不到设置 JOptionPane 大小的方法,但我的理解是,如果组件大小正确,则没有必要。有人能告诉我我错过了什么吗? TIA。

最佳答案

JOptionPane 调用 pack()pack() 使用其子级的 preferredSize 来决定其宽度和高度。默认情况下,JTextPane 的首选宽度是最长行的宽度。如果您想改变这种行为,

  • 或者重写 JTextPanegetPreferredSize 方法
  • 或者在 JTextPane 上使用 setPreferredSize 而不是 setSize

关于java - 带有 HTML 的 JtextPane 太宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955791/

相关文章:

java - 通过方法构建时,JTextArea 不会出现在 JScrollPane 上

java - JTabbedPane 内的 JPanel 内的 JScrollPane 不滚动

html - float 在前一个 div 中导致与下面的重叠

JavaBuilder 处理 CoreException

java - Android ArrayList,意外停止

java - 使用接口(interface)和抽象类

php - MP3 播放器,如grooveshark

html - Internet Explorer 和 Firefox 对齐元素在站点上不同

java - JScrollPane 如何理解何时需要显示滚动条?

java - 执行 jnlp 文件期间出现 SecurityException(主 jar 中缺少必需的权限 list 属性)