2017-12-26 7 views
1

タブの枠があります(明らかに)。通常、タブ上でsetOnSelectionChanged()を呼び出すことによって、各タブにリスナーを設定することができます。ただし、TabPaneが何らかの方法で再編成されている場合、タブペインは自動的にリストの最初のタブを選択します。これは私のためにいくつかのパフォーマンスの問題を引き起こしているので、マウスクリックによってタブが選択されたかどうかを知る方法があるかどうかを知りたいと思います。タブにはonMouseClick()リスナーが含まれていないようです。JavaFXマウスクリックがトリガされたかどうかをチェックする方法タブの選択

+0

最初にパフォーマンスの問題に対処する価値があります。 – trashgod

+0

ええ、私は過去2日間それをやろうとしていて、大幅な改善をしましたが、やるべきことはまだあります。これは私が探検していた道でした。上記を行うか、最初に何も選択しないようにタブ区画を強制する方法があったら幸いです。 –

+0

モデルの問題をビューで修正しようとしているようです。その代わりに、 'javafx.concurrent.Worker'を使用し、関連するプロパティを更新して、タブの選択が遅れないようにしてください。 – trashgod

答えて

1

タブは実際にノードではなくマウスクリックリスナーがないため、答えに対する解決策は見つかりませんでしたが、パフォーマンスの問題は解決されました。

タブを変更すると、ビュー全体を再作成してモデルをビューに適用していました。このため、タブが変更されるたびに約140ms以上の遅延が生じました。タブが選択されるとビューが再作成されていたので、正しいタブを見つけるために検索ボックスを実装すると大きな問題でした(新しいタブを追加するときにタブペインが自動的に最初のタブを選択します)。

最終的には、コントローラーにビューを一度作成させ、ビューを何度も再作成するのではなく、タブを変更するだけでモデルをフックするように設計が変更されました。

あなたは、パフォーマンスの問題を持つとMVC/JavaFXのプログラミングでは比較的新しいしている場合、私は非常にこの記事を見てお勧めします:

Scene loads too slow

を現在変更タブが大幅に改善されている約15msのを取ります!

関連する問題