JPanelを持つJScrollPaneがあります。私はJPanel上に多くの異なるコンポーネントも持っています(例えば、Label、JTextFields、JTextAreas)。これらのコンポーネントは、プログラムで(実行時に、ユーザーの要求に応じて)追加されます。 JPanelはSpringLayoutを使用します。スクロールは計算せずに正しく機能しないため、コンポーネントはコンポーネントを追加した後にJPanelの推奨サイズを計算します。私のprepareGui()メソッドの一環として、コンポーネントを追加したり、適切なサイズを計算したりしています。 コンポーネントに表示されるデータは定期的にリフレッシュされます(リスナーによって呼び出されるrefreshData()メソッドで)。データの更新後にスクロールバーが移動する
私の問題点:スクロールバーは常に固定位置に設定されています(理由は分かりません)。私はスクロールバーを元気にして元気にしておきたい。
スクロールバーが動く場所を見つけようとしました。私は開始時とrefreshdataを()メソッドの最後にいくつかの値をチェックし、彼らは同じであった(彼らはrefreshdataを内部で変化しなかった()):
はscrollPane.getVisibleRect().getX()
scrollPane.getVisibleRect().getY()
scrollPane.getVisibleRect().getWidth()
scrollPane.getVisibleRect().getHeight()
panel.getVisibleRect().getX()
panel.getVisibleRect().getY()
panel.getVisibleRect().getWidth()
panel.getVisibleRect().getHeight()
scrollPane.getHorizontalScrollBar().getX()
scrollPane.getHorizontalScrollBar().getY()
scrollPane.getHorizontalScrollBar().getWidth()
scrollPane.getHorizontalScrollBar().getHeight()
scrollPane.getHorizontalScrollBar().getValue()
scrollPane.getVerticalScrollBar().getX()
scrollPane.getVerticalScrollBar().getY()
scrollPane.getVerticalScrollBar().getWidth()
scrollPane.getVerticalScrollBar().getHeight()
scrollPane.getVerticalScrollBar().getValue()
レイアウトマネージャの変更はかかりませんでした効果。
私は1つのことに気付きました(意味がないかどうかわかりません)。優先サイズ(prepareGui()内)のみを設定すると、スクロールバーが最後まで移動します。私もサイズを設定すると、スクロールバーは変わった固定位置に移動します。
どうすればこの問題を防ぐことができますか? スクロールバーは現在の位置を維持する必要があります。