In-*_*ung 3 java user-interface swing jpanel jscrollpane
我在 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)
非常感谢您的所有评论。抱歉,我没有在问题中给出完整正确的示例,因为涉及到太多不同的类。
在我的情况下,ScrollPane 内 Panel 内的 textareas,默认情况下,我通过使用 setViewPosition 方法在 invokelater 方法中使用 scrollPane 滚动到顶部。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
scrollPane.getViewport().setViewPosition( new Point(0, 0) );
}
});
Run Code Online (Sandbox Code Playgroud)