【发布时间】:2021-02-27 14:03:28
【问题描述】:
我有一个JEditorPane。我希望窗格高度与内容相对应。我已经这样做了,当窗格内容为文本时它可以工作:
public class JEditorPaneTest extends JFrame {
public static void main(String[] args) {
final JFrame mainFrame = new JFrame("test");
mainFrame.getContentPane().setLayout(new FlowLayout());
mainFrame.setSize(500,500);
final JEditorPane field = new JEditorPane();
//field.setContentType("text/html");
field.setText(htmlize("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse accumsan magna vel libero bibendum, quis hendrerit nisi rutrum. Cras placerat erat eget dictum ornare. Sed eget nisl quis nibh vehicula mollis. Vestibulum non iaculis erat, quis pulvinar magna. Suspendisse ac rhoncus purus. Quisque finibus, dolor varius tincidunt aliquet, mauris felis condimentum neque, at viverra felis nulla at justo. Duis ut dui velit. Integer vitae mollis leo. Cras quis urna odio. Suspendisse tempus, urna sed maximus fringilla, ante velit finibus massa, id commodo libero quam non ipsum. Sed id augue vitae sapien sagittis imperdiet in eget nibh. Nam semper posuere nisl, dictum efficitur ipsum aliquet ac. Phasellus eros massa, fringilla et neque maximus, pretium tempor magna."));
field.setSize(200,40);
field.setSize(200, field.getPreferredSize().height);
mainFrame.getContentPane().add(field,BorderLayout.CENTER);
mainFrame.setVisible(true);
System.out.println(field.getPreferredSize().width+" , "+field.getPreferredSize().height);
}
public static String htmlize(String pMessage) {
return "<html><body>" + pMessage + "</body></html>";
}
}
首选大小根据文本内容已知。宽度固定为 200,因此可以通过摆动轻松计算首选高度。在控制台中,我可以看到 200、411(我固定首选高度的宽度)。在对话框中,我们看到窗格的大小合适:
问题是我想要一个 HTML 内容。所以在代码中我取消注释field.setContentType("text/html");
我运行我的程序,我在控制台中有:5393、23:宽度不再强制为 200。
这里是对话结果:
如何解决我的 HTML 内容问题?
【问题讨论】:
标签: java swing jeditorpane