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);
如果我打开面板,垂直滚动条从面板中间开始,我需要始终从顶部开始滚动条。
是否有任何方法可以做到这一点?
提前致谢
答案 0 :(得分:1)
我不确定NScrollPane
是什么,或getNpQuestionArea()
返回的组件是什么,但看起来它们可能只是JComponent
的扩展。在这种情况下,您可以调用以下内容...
getNpQuestionArea().scrollRectToVisible(new Rectangle(0,0,0,0));
另外,假设NScrollPane
是JScrollPane
的扩展名,如果您将getNpQuestionArea()
传入NScrollPane
的构造函数,我相信它应该会自动存在顶端。所以,像这样......
nspQuestionArea = new NScrollPane(getNpQuestionArea());
如果您将JComponent
解析为NScrollPane
构造函数,我相信它会将滚动条置于JComponent
的左上角。但是,如果您稍后通过调用JComponent
添加setViewportView()
,则默认情况下会将其置于集中位置。它与生成显示时JComponent
的布局方式有关 - 如果在构造函数中添加它,它会将NScrollPane
布局为正确的大小和位置JComponent
你传递给它。但是,如果您创建默认NScrollPane
并且之后只提供JComponent
,则只会以默认大小创建NScrollPane
,而不是将其恰当地拟合到JComponent
尝试这两种方法,看看你怎么做。
答案 1 :(得分:0)
setCaretPosition(0)为我工作