【问题标题】:Scroll to a specific part of a JFrame滚动到 JFrame 的特定部分
【发布时间】:2012-02-26 06:51:30
【问题描述】:

使用Cobra,我有一个void 函数,它将滚动到dom 树的给定节点或htmlpane 的给定像素。当我使用JFrame.setContentPane() 函数将htmlpane 设置为容器,并使用scroll() 函数滚动特定点时,它不起作用。

代码如下:

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));

上面写着:

此处不允许使用 void 函数。

【问题讨论】:

    标签: java swing jframe jscrollpane jtextcomponent


    【解决方案1】:

    我不熟悉您正在使用的 Cobra API,但在大多数情况下,GUI 组件必须在您可以滚动之前自行布局。这是因为在将组件添加到容器之前,它不知道它的大小。尝试延迟滚动,看看是否有帮助:

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

    【讨论】:

    • 我应该把它放在哪里?在 frame.setsize() 之前;还是之后?
    • 我复制粘贴了您的代码并重新运行程序,但没有任何改变
    • 在 frame.setVisible(true) 之后尝试。
    • 它解决了我将代码放在哪里,我唯一的错误是包含 set.visible();我的程序中的部分代码然后它重复了 twicw 然后没有任何动作,但现在它正在工作,无论如何谢谢你;)
    • 现在上面的问题已经解决了,但是有一个新问题出现了,你可以在这里阅读link以防万一你不介意:d
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多