1

アプリケーションの使用中に動的にサイズを変更するスクロール可能なクライアントを含む JScrollpane があります。クライアントのサイズが変更されたときに、ビューポートを移動せずにJScrollPane が変更を認識できるようにします。

私が言いたいことを明確にするには: Sunの記事How to use scroll panesの Java Webstart の例ScrollDemo2を参照してください。ウィンドウの下部をクリックすると、ウィンドウの一部に円が表示され、スクロールバーが移動します。私が避けたいのは後者の振る舞いです。

私の推測では、スクロール ペイン ソリューションに関連する多くのコンポーネントの 1 つに単純なフラグを設定するだけの問題だと思いますが、それがどこにあるのかわかりません。誰か知っていますか?

4

2 に答える 2

1

JScrollPane でビューポートの標準的な動作をオーバーライドすることで、この問題を解決できました。これはすべての人に適しているわけではない解決策かもしれませんが、私の GUI ではこれは魅力的に機能します。

JScrollPane pane = new JScrollPane();
pane.setViewport(
  new JViewport(){
    /**
     * An empty override implementation to prevent undesired scrolling on
     * size changes of the client.
     */
     @Override
     public void scrollRectToVisible(Rectangle rect){}
  });
于 2009-12-15T08:23:21.433 に答える
0

私は次のようなことを試します:

Point p = scrollPane.getViewport().getViewportPosition();
revalidate();
scrollPane.getViewport().setViewportPosition(p);

コードの最後の行を SwingUtilities.invokeLater でラップする必要がある場合があります。

それでもうまくいかない場合は、 revalidate() の前後にビューポートを無効/有効にできますか?

于 2009-12-14T16:00:21.503 に答える