自分のシーンにScrollPaneがあり、それに一連のノードを追加したいと思います。正確な量は動的でなければなりません。私はラベルノードを使ってコンセプトをテストしていますが、ScrollPaneのコンテンツ(現在はVBox)に必要な数のラベルを追加できます。JavaFX - 正しいスクロール方向でスクロールペインにノードを追加する
私の問題は、ユーザーがスクロールペインを使って正常にスクロールできるようにする方法を考え出したことです。コンテンツはスクロールバーとペースに合っています。つまり、下にスクロールすると、コンテンツが下に移動します。私はスクロールアップ、コンテンツがスクロールアップ。だから私は10ラベルがある場合は、現在表示されている5つのうち、他の5つを見て本能的な行動は、下にスクロールすることです。残念ながら、これはコンテンツ全体を下に移動させ、空白を上にしてラベルの多くを隠すだけです。
ことができますが、攻撃の私の計画の要旨はこの場合、私はいくつかのサンプルコードを投稿することができます:私はVBoxのを使用しているため
ScrollPane sp = new ScrollPane();
VBox content = new VBox();
sp.setContent(content);
for (int i = 0; i < 10; i++)
{
Label label = new Label("Label " + i);
content.setPrefHeight(content.getPrefHeight() + label.getPrefHeight());
content.getChildren().add(label);
}
、ラベルを1つの上に(Y軸方向に)積層されていますもう一つは、私が欲しいものです。より多くのラベルが追加されるにつれ、ScrollBarはVBoxの増加したサイズを反映する必要があります。 ScrollPane.setVmax()
メソッドを含む、これを動作させるためのいくつかのアプローチを試しましたが、スクロール方向が間違った方向に移動する問題があります。私はEventHandler
とEventFilter
を試してみましたが、正しい方向にコンテンツを移動しないスクロールの問題を解決することなく、それに応じて値を修正しました。
答えはとてもシンプルですが、多くの長い時間がコードを迷惑にしても、私はそれを避けています。
EDIT:私の問題を解決しListView
を使用しての
jewelseaの提案。しかし、私はなぜScrollPane
を使ってもそれほどうまくいきませんでしたか?さらに、私はListView
の実装で奇妙な振る舞いに遭遇しました。私はボタンを使って手動で新しいLabel
をビューに追加します。今度は新しいLabel
を追加した後、ビューがフリーズします。スクロール位置を更新するか、新しく追加されたLabel
を表示する前に、数秒間ロックアップします。私はこれがそうであるかどうかわからない。Label
のインスタンスがビューによって管理されているか、もっと狡猾なものが遊んでいるからです。
これを実装するために 'ListView 'を使用しない理由は何ですか?私はそれがあなたのためにこれらの種類の問題の世話をするかもしれないと思います。 – jewelsea
@ jewelsea、あなたはそれを解決しました!私はいつもこれらの問題の大半がどんなに大きいように見えるのか驚いていますが、その解決策はとてもシンプルです。私は 'ListView