带有HTML的JtextPane太宽

时间:2016-06-21 22:44:22

标签: java html jscrollpane jtextpane

我正在尝试创建一个可滚动的JTextPane来显示HTML。我有它的工作,除了试图获得正确的大小。似乎无论我做什么,我都无法影响窗格的宽度。

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上尝试过setize,但都没有影响宽度。似乎它想要将宽度设置为最长的宽度< p>标记而不是将HTML包装在指定的大小内。我似乎无法找到的是一种设置JOptionPane大小的方法,但我的理解是,如果组件的大小正确,则不应该这样做。有人能告诉我我错过了什么吗? TIA。

1 个答案:

答案 0 :(得分:0)

app.directive('ngConfirmClick', [ function() { return { link: function (scope, element, attr) { var msg = attr.ngConfirmClick || "Are you sure?"; var clickAction = attr.confirmedClick; element.bind('click',function (event) { if (window.confirm(msg)) { scope.$eval(clickAction) } }); } }; } ]); 来电JOptionPane。并且pack()使用其子项的pack()来确定其宽度和高度。默认情况下,preferredSize的首选宽度是最长行的宽度。如果要更改此行为,

  • 或覆盖JTextPane
  • getPreferredSize方法
  • 或者使用JTextPane上的setPreferredSize代替JTextPane