2012-02-26 47 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