我试图在JFrame(固定大小)中显示JEditorPane,然后显示HTML文本字符串。我可以显示所有内容,但似乎我传递到EditorPane的HTML字符串中的文本没有切断并换行到新行。即它只是伸出屏幕。 似乎setSize方法与Pane的大小无关?
我正在为不同大小的屏幕制作这个应用程序,因此重要的是文本包装到新行并适合屏幕大小而不是跑掉!
JEditorPane pane = new JEditorPane();
pane.setEditable(false);
HTMLDocument htmlDoc = new HTMLDocument () ;
HTMLEditorKit editorKit = new HTMLEditorKit () ;
pane.setEditorKit (editorKit) ;
pane.setSize(size);
pane.setMinimumSize(size);
pane.setMaximumSize(size);
pane.setOpaque(true);
pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>");
bg.add(pane, BorderLayout.CENTER);
非常感谢Sam
答案 0 :(得分:3)
适合我...也许你用不同的方式初始化了它?
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
public class JEditorPaneTest extends JFrame {
public static void main(String[] args) {
JEditorPaneTest t= new JEditorPaneTest();
t.setSize(500,500);
Container bg = t.getContentPane();
t.createJEditorPane(bg, bg.getSize());
t.setVisible(true);
}
public void createJEditorPane(Container bg, Dimension size) {
JEditorPane pane = new JEditorPane();
pane.setEditable(false);
HTMLDocument htmlDoc = new HTMLDocument();
HTMLEditorKit editorKit = new HTMLEditorKit();
pane.setEditorKit(editorKit);
pane.setSize(size);
pane.setMinimumSize(size);
pane.setMaximumSize(size);
pane.setOpaque(true);
pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>");
bg.add(pane, BorderLayout.CENTER);
}
}
答案 1 :(得分:0)
我使用方法setPreferredSize而不是setSize,如下面的代码所示:
JEditorPane jEditorPane = new JEditorPane();
jEditorPane.setEditable(false);
jEditorPane.setContentType("text/html");
jEditorPane.setText(toolTipText);
jEditorPane.setPreferredSize(new Dimension(800, 600));
这适用于任何容器 - 在我的例子中,我将它与滚动窗格一起使用。
HTH!