我需要将JScrollPane滚动到底部.JScrollPane包含一个JPanel,其中包含许多JLabel.
要滚动到顶部,我只是这样做:
scrollPane.getViewport().setViewPosition(new Point(0,0));
Run Code Online (Sandbox Code Playgroud)
但是如何精确滚动到最底部?(太远而且紧张不安)
cam*_*ckr 105
JScrollBar vertical = scrollPane.getVerticalScrollBar();
vertical.setValue( vertical.getMaximum() );
Run Code Online (Sandbox Code Playgroud)
小智 36
在使用scrollRectToVisible()方法尝试查找除了一个以外的答案的几个小时后,我成功了.我发现如果在将文本输出到滚动窗格中的文本区域后使用以下代码,它将自动聚焦在文本区域的底部.
textArea.setCaretPosition(textArea.getDocument().getLength());
Run Code Online (Sandbox Code Playgroud)
所以,至少对我来说,我的打印方法看起来像这样
public void printMessage(String message)
{
textArea.append(message + endL);
textArea.setCaretPosition(textArea.getDocument().getLength());
}
Run Code Online (Sandbox Code Playgroud)
小智 24
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
e.getAdjustable().setValue(e.getAdjustable().getMaximum());
}
});
Run Code Online (Sandbox Code Playgroud)
tra*_*god 16
而不是setViewPosition(),我通常使用scrollRectToVisible(),如何使用滚动窗格中描述.你可以使用适当的标签的结果getBounds()为所需Rectangle.
附录:@Matt在另一个答案中注意到,"如果在将文本输出到滚动窗格中的文本区域后使用以下代码,它将自动聚焦在文本区域的底部."
在一个特定情况下JTextComponent,还考虑使用setUpdatePolicy()的方法DefaultCaret来ALWAYS_UPDATE,示出在这里.
Mat*_*aun 11
我改编了Peter Saitz的代码.滚动条完成向下滚动后,此版本将保持滚动条的工作状态.
private void scrollToBottom(JScrollPane scrollPane) {
JScrollBar verticalBar = scrollPane.getVerticalScrollBar();
AdjustmentListener downScroller = new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
Adjustable adjustable = e.getAdjustable();
adjustable.setValue(adjustable.getMaximum());
verticalBar.removeAdjustmentListener(this);
}
};
verticalBar.addAdjustmentListener(downScroller);
}
Run Code Online (Sandbox Code Playgroud)
没有一个答案对我有用。出于某种原因JScrollPane,即使我重新验证了所有内容,我也没有滚动到最底部。
这对我有用:
SwingUtilities.invokeLater(() -> {
JScrollBar bar = scroll.getVerticalScrollBar();
bar.setValue(bar.getMaximum());
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66732 次 |
| 最近记录: |