使JScrollPane捕捉到顶部

时间:2012-11-05 14:47:06

标签: java swing jscrollpane

所以,我有一个打开文档并显示它的程序。但是,对于显示区域,文档通常很大,所以我添加了一个JScrollPane。由于我将元素添加到显示器的方式,我总是在加载后最终在文档的末尾。我无法改变加载文档的方式,但我想改变加载后JScrollPane的行为方式。

如何强制它突然移到顶部?我尝试使用scrollRectToVisible作为顶级组件,但这不起作用。

有没有一种方法可以让它将它的位置设置为顶部(它只是一个垂直的JScrollpane)?

编辑:我搞砸了,它是JScrollPane,而不是JScrollBar。

EDIT2:

我决定这样做:

myScrollPane.getVerticalScrollBar().setValue(0);

在JFileChooser construcor中:

...
if (returnVal == JFileChooser.APPROVE_OPTION)
{
...
Main.myScrollPane.getVerticalScrollBar().setValue(0);
}

这不起作用。如果我将它移动到我的JMenu对象并添加一个标志,它看起来像这样:

在JFileChooser construcor中:

...
if (returnVal == JFileChooser.APPROVE_OPTION)
{
...
Main.flag = true;
}

在JMenu构造函数中:

...
someJMenuItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new MyJFileChooser();
if (Main.flag)
{
Main.myScrollPane.getVerticalScrollBar().setValue(0);
Main.flag = false;
}
}
}

这也行不通,但我知道if命令中的代码正在执行。

如果我附上Main.myScrollPane.getVerticalScrollBar()。setValue(0);在JMenu的一个按钮中,它将完美地工作。

那么,出了什么问题?

1 个答案:

答案 0 :(得分:2)

  1. 取决于program that opens a document and displays it必须将Caret的行为保持为零

  2. 必须使用JScrollBar移动到零值

  3. 使用JViewport移动到(0,0)(scrollRectToVisible for a top component

  4. 在SSCCE发布后尽快提供更好的帮助,因为这里的答案仅与理论有关

  5. 修改

    正确地注意到@Joop Eggen,在大多数情况下需要(view_to_model)包含在SwingUtilities.invokeLater(...)