我在 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/