0
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);

パネルを開くと、垂直スクロールバーはパネルの中央から始まります。常に上からスクロールバーを開始する必要があります。

そのようにする方法はありますか?

前もって感謝します

4

2 に答える 2

1

NScrollPaneanが何であるか、またはコンポーネントが何から返されたかはよくわかりませんgetNpQuestionArea()が、おそらく s の単なる拡張であるように見えます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のみを指定すると、 に適切に適合するのではなく、デフォルト サイズで が作成されるだけです。JComponentNScrollPaneJComponent

これらの両方を試してみて、どうなるか見てみましょう。

于 2012-10-31T09:15:27.507 に答える
0

setCaretPosition(0)は私のために働いた

于 2012-12-20T06:28:20.157 に答える