相关疑难解决方法(0)

在JScrollPane上设置滚动条

我有这个JTextPane(包裹在一个JScrollPane)由一个支持HTMLEditorKit.该内容JTextPane是简单的HTML,其中一些图像(本地文件)使用img标签嵌入.问题是当你加载JTextPane它时,需要一瞬间加载,然后它会在页面底部出现滚动条.如果我做:

JTextPane text = new JTextPane();
JScrollPane scroll = new JScrollPane(text);
// do some set up...
scroll.getVerticalScrollBar().setValue(0);
Run Code Online (Sandbox Code Playgroud)

它暂时设置滚动条,然后另一个thead(可能是负责加载图像)来并将滚动条敲回底部.我尝试添加:

((AbstractDocument)text.getDocument()).setAsynchronousLoadPriority(-1);
Run Code Online (Sandbox Code Playgroud)

但这并没有解决它.有没有办法从任一得到一个事件text.getDocument()text当窗格完成加载,这样我可以设置滚动条,然后会通知我吗?另一种方法是我设置另一个线程等待一秒左右,然后设置滚动条,但这是一个糟糕的黑客.

你的建议?

html java events swing

6
推荐指数
1
解决办法
1万
查看次数

如何设置滚动到顶部 - JPanel 在 Jscrollpane 中有多个 JTextareas

我在 JScrollPane 中有一个 JPanel。JPanel 垂直包含多个 JTextAreas。

我喜欢在页面刷新时将滚动窗格的滚动保持在顶部。目前,滚动总是从底部开始。

这是我当前的代码,它不起作用..

    panel.invalidate();
    panel.revalidate();
    panel.repaint();
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            ((JPanel) panel).setLocation(new Point(0, 0));
        }
    });
Run Code Online (Sandbox Code Playgroud)

我也尝试将下面的代码添加到滚动窗格中,但它不起作用..

scrollPanel.getViewport().setViewPosition( new Point(0, 0) );
Run Code Online (Sandbox Code Playgroud)

我研究了其他 stackoverflow 问题,他们在 Jscrollpane 中使用了 Jtextarea(他们使用 setCaretPosition(0) 解决了这个问题,但是我不能对面板使用相同的功能)。就我而言,还有一个额外的层。

我该如何解决这个..?

编辑**

根据 Pavlo Viazovskyy 的建议,我也在下面尝试过这个,但它仍然对我不起作用.. :(

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            scrollPane.getVerticalScrollBar().setValue(0);
        }
    });
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jpanel jscrollpane

3
推荐指数
1
解决办法
1613
查看次数

填充后将文本区域滚动到顶部

我有一些文本区域充满了信息循环。循环完成后是否可以使其“跳转”或自动滚动回到顶部,以便用户从头开始而不是从头看到?

java loops textarea awt

2
推荐指数
1
解决办法
3691
查看次数

标签 统计

java ×3

swing ×2

awt ×1

events ×1

html ×1

jpanel ×1

jscrollpane ×1

loops ×1

textarea ×1

user-interface ×1