java - 如何设置滚动到顶部 - JScrollpane中有多个JTextarea的JPanel

标签 java swing user-interface jpanel jscrollpane

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

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

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

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

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

scrollPanel.getViewport().setViewPosition( new Point(0, 0) );

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

我该如何解决这个问题..?

编辑**

根据 Pavlo Viazovskyy 的建议,我也尝试过以下方法,但它仍然对我不起作用..:(

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            scrollPane.getVerticalScrollBar().setValue(0);
        }
    });

最佳答案

非常感谢大家的评论。 抱歉,我没有在问题中给出完整的正确示例,因为涉及太多不同的类。

在我的例子中,ScrollPane 内的 Panel 内的文本区域,我通过在 invokelater 方法中使用 setViewPosition 方法来默认滚动到顶部。

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        scrollPane.getViewport().setViewPosition( new Point(0, 0) );
    }
});

关于java - 如何设置滚动到顶部 - JScrollpane中有多个JTextarea的JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42961012/

相关文章:

java - LDAP 密码重置,但我没有来自 Java 应用程序的旧密码

java - Swing GUI - 创建一个 'Settings' 窗口(正确)

java - 更改 JComboBox 中选择的颜色(选择后)

c# - Unity 向 UI Slider 发送值并更新 Slider bar

Java swing——Jpanel 不重新渲染/重绘自身

java - 将面板从另一个类添加到主类

java - 一个类有没有可能实现两个接口(interface),每个接口(interface)都包含一个具有相同方法头的方法?

Java 错误表达式开始非法

Java - 访问 ValueMap 时遇到问题

Java 随 secret 码生成器