所以,我有一个程序可以打开文档并显示它。但是,对于显示区域,文档通常很大,因此我添加了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,它将完美无缺。
那么,怎么了?
-
program that opens a document and displays it
的取决于Caret
的可能性 -
必须用
JScrollBar
移动到零值 -
用
JViewport
移动到(0,0)(scrollRectToVisible for a top component
) -
为了更好的帮助,请更早地发布SSCCE,因为此处的答案仅是关于理论
编辑
正如@Joop Eggen
正确注意到的,在大多数情况下(view_to_model)包裹在SwingUtilities.invokeLater(...)