2016-09-24 7 views
1

私のアプリは長いリストのコンテナを表示し、ユーザがコンテンツを編集すると、 )。リストをスクロールしないでコンテナのリストを再構築する

現在、私はこれを単にgetContentPane().removeAll()で行い、すべてのコンテナを再計算してからrevalidate()に更新したフォームを表示します。しかし、私がこれを行うと、リストは上にスクロールします。

リスト内の同じスクロール位置を保持するにはどうしたらいいですか?たとえば、編集したばかりのコンテナの新しいインスタンスが以前と同じ画面に残っていますか?私はscrollComponentToVisible(Component)を知っていますが、私が見る限り、リフレッシュ前の画面と全く同じ場所にコンテナを置くことはできません。

+0

完全なコード例を追加してください –

答えて

0

位置が変更されている可能性がありますので、setScrollY()を呼び出すと、おそらく同じ位置にはなりません。scrollComponentToVisibleに近い機能が必要なので、私はそれを実行できません。

+0

私は 'scrollComponentToVisible(Component c)'のコードを見ましたが、複雑さとエッジケースがカバーされているため、スクロール後に 'c'の上端の特定の望ましいy位置を示すために' y'パラメータを追加することは可能でしょうか?次に、周囲のコンテナが更新されている間に 'c'が画面上に固定されているように見えるでしょう。 – user1246562

+0

ちょうど別の細部に気づいた。また、 'scrollComponentToVisible'が通常それを置く画面の下部に' c'コンポーネントが既に見えるときでも、 'scrollComponentToVisible'が行う視覚的なスクロールを避ける必要があります。 – user1246562

+0

'Container'を派生している限り、特定の領域が必要な場合は、' setScrollY() 'を使うことができます。コンポーネントが完全に可視であれば何もしないので、 'scrollComponentToVisible'を呼び出すことができます。アニメーションを無効にするには 'setSmoothScrolling(false)'を呼び出すだけですが、後でそれをtrueに戻すことを忘れないでください。 –

関連する問題