1

そのため、ドキュメントを開いて表示するプログラムがあります。ただし、ドキュメントは表示領域に対して大きすぎることが多いため、JScrollPane を追加しました。要素を表示に追加する方法が原因で、ドキュメントを読み込んだ後、常にドキュメントの最後になります。ドキュメントのロード方法を変更することはできませんが、ロード後の JScrollPane の動作を変更したいと考えています。

強制的に上にスナップするにはどうすればよいですか? 一番上のコンポーネントに scrollRectToVisible を試してみましたが、うまくいきませんでした。

位置を上に設定するために使用できる方法はありますか (これは垂直 JScrollpane のみです)。

編集:私はめちゃくちゃです、それはJScrollBarではなくJScrollPaneです。

編集2:

私はこれで行くことにしました:

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 のボタンに変更すると、問題なく動作します。

それで、何が問題なのですか?

4

1 に答える 1

2
  1. 依存して、位置をゼロprogram that opens a document and displays itに保つ必要がありますCaret

  2. JScrollBarゼロ値に移動する必要があります

  3. (0, 0) に移動JViewport( scrollRectToVisible for a top component)

  4. ここでのこの回答は理論に関するものにすぎないため、SSCCEを投稿するよりも早く助けを得るために

編集

正しく認識されているよう@Joop Eggenに、ほとんどの場合 (view_to_model) が必要です。SwingUtilities.invokeLater(...)

于 2012-11-05T14:53:39.180 に答える