始终从顶部开始垂直ScrollBar

时间:2012-10-31 07:45:25

标签: java swing jscrollpane

nspQuestionArea = new NScrollPane(); 
nspQuestionArea.setVerticalScrollBarPolicy
(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);  

nspQuestionArea.setVerticalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);  

nspQuestionArea.setViewportView(getNpQuestionArea());    
//where getNpQuestionArea() return a panel    
nspQuestionArea.getVerticalScrollBar().setValue(0);             
nspQuestionArea.getVerticalScrollBar().setValue(0);    
nspQuestionArea.getVerticalScrollBar().setUnitIncrement(5);    
nspQuestionArea.setOpaque(false);

如果我打开面板,垂直滚动条从面板中间开始,我需要始终从顶部开始滚动条。

是否有任何方法可以做到这一点?

提前致谢

2 个答案:

答案 0 :(得分:1)

我不确定NScrollPane是什么,或getNpQuestionArea()返回的组件是什么,但看起来它们可能只是JComponent的扩展。在这种情况下,您可以调用以下内容...

getNpQuestionArea().scrollRectToVisible(new Rectangle(0,0,0,0));

另外,假设NScrollPaneJScrollPane的扩展名,如果您将getNpQuestionArea()传入NScrollPane的构造函数,我相信它应该会自动存在顶端。所以,像这样......

nspQuestionArea = new NScrollPane(getNpQuestionArea());

如果您将JComponent解析为NScrollPane构造函数,我相信它会将滚动条置于JComponent的左上角。但是,如果您稍后通过调用JComponent添加setViewportView(),则默认情况下会将其置于集中位置。它与生成显示时JComponent的布局方式有关 - 如果在构造函数中添加它,它会将NScrollPane布局为正确的大小和位置JComponent你传递给它。但是,如果您创建默认NScrollPane并且之后只提供JComponent,则只会以默认大小创建NScrollPane,而不是将其恰当地拟合到JComponent

尝试这两种方法,看看你怎么做。

答案 1 :(得分:0)

setCaretPosition(0)为我工作