将JSCrollpane捕捉到顶部



所以,我有一个程序可以打开文档并显示它。但是,对于显示区域,文档通常很大,因此我添加了JSCrollpane。由于我将元素添加到显示器中的方式,因此我总是在加载文档后的结尾处。我无法更改加载文档的方式,但是我想更改JSCrollpane加载后的行为方式。

我该如何强迫它捕捉到顶部?我尝试使用滚动曲线来适合顶部组件,但这不起作用。

我可以使用一种方法将其设置为顶部(仅是垂直JSCrollpane)?

编辑:我搞砸了,是JSCrollpane,而不是JSCrollbar。

edit2:

我决定这样做:

myScrollPane.getVerticalScrollBar().setValue(0);

在Jfilechooser构造中:

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

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

在Jfilechooser构造中:

...
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的Butten,它将完美无缺。

那么,怎么了?

  1. program that opens a document and displays it的取决于Caret的可能性

  2. 必须用JScrollBar移动到零值

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

  4. 为了更好的帮助,请更早地发布SSCCE,因为此处的答案仅是关于理论

编辑

正如@Joop Eggen正确注意到的,在大多数情况下(view_to_model)包裹在SwingUtilities.invokeLater(...)

最新更新