2014-01-15 66 views
0

我有一個JTextPane,並想在它內部創建一個div,與JTextPane的高度完全一致。 div應該始終是JTextPane的高度。JTextPane HTML渲染器錯誤?

public class Test { 

JTextPane edit=new JTextPane(); 
public Test() { 
    JFrame frame=new JFrame("Center text vertically"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(edit); 
    String text = "<html><div style=\"height: 0px; border: 1px solid black;\">here is some text</div></html>"; 
    edit.setEditorKit(new HTMLEditorKit()); 
    edit.setContentType("text/html"); 
    edit.setText(text); 

    edit.addComponentListener(new ComponentAdapter() { 
     @Override 
     public void componentResized(ComponentEvent e) { 
      int height = edit.getHeight(); 
      height -= 50; //this makes the problem more clear 
      String text = "<html><div style=\"height: " + height + "px; border: 1px solid black;\">here is some text</div></html>"; 
      edit.setText(text); 
     } 
    }); 
    frame.setSize(300,200); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 
public static void main(String[] args) throws Exception { 
    new Test(); 
} 
} 

每當JTextPane的調整大小,我坐的JTextPane的高度,並創建一個div正是這種高度。

問題是,div有時大於高度,有時小於高度。您可以通過更改框架的高度來嘗試此操作。我認爲div應該與JTextPane同等比例,但它不會...

注:JTextPane的高度計算正確(用Gimp進行雙重檢查)。

任何想法?

回答

0

任何想法?

放棄追求DIV的想法,而是將樣式設置爲BODY元素。除非內容太長而不適合,否則主體將填充可用空間,然後它會溢出。

+0

我安德魯,我想實現的是讓文本對齊在JTextPane的底部。我的想法是在div內使用一個表格,並說valign = bottom。因此我需要一個具有JTextPane高度的周圍div。 – matthias