2012-02-26 74 views
2

使用Cobra,我有一個void函數,它將滾動到dom樹的給定節點或htmlpane的給定像素。當我使用JFrame.setContentPane()函數將htmlpane設置爲容器時,我使用scroll()函數滾動specefic點,它不起作用。滾動到JFrame的特定部分

下面是代碼:

HtmlRendererContext rendererContext = (HtmlRendererContext) new LocalHtmlRendererContext(htmlPanel, uAgent); 
DocumentBuilderImpl builder = new DocumentBuilderImpl(uAgent, rendererContext); 
Document document = builder.parse(url); 
JFrame frame = new JFrame(); 
htmlPanel.scroll(500, 300); 
//frame.getContentPane().add(htmlPanel); 
frame.setContentPane(htmlPanel); 

,如果你看到下面的代碼:

frame.setContentPane(htmlPanel.scroll(500, 300)); 

它說:

這裏不允許有空隙的功能。

回答

2

我對您正在使用的Cobra API不熟悉,但在大多數情況下,GUI組件必須在您滾動之前自行佈局。這是因爲在將組件添加到容器之前,它不知道它會是什麼大小。嘗試延遲滾動,看看是否有幫助:

frame.setContentPane(htmlPanel); 
frame.setVisible(true); 
SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     htmlPanel.scroll(500, 300); 
    } 
}); 
+0

我應該把它放在哪裏? before frame.setsize();或之後? – lonesome 2012-02-26 09:43:00

+0

我複製粘貼你的代碼並重新運行程序,但沒有任何更改 – lonesome 2012-02-26 09:54:56

+0

嘗試frame.setVisible(true)後。 – 2012-02-26 12:55:38