JavaFXではデータベースからTableViewを取得したいと考えていますが、小さな部分(50ポジションなど)で読み込む必要があるレコードがたくさんあり、私はスクロールホイールをスクロールすると少しずつ残ります。任意のヒント?どこに良い例がありますか?スクロールマウスを使用した後のデータの表示
1
A
答えて
1
例として、テーブルの要素を表すPersonクラスを使用します。ここでの主なクラス
public class Person {
private StringProperty firstName = new SimpleStringProperty(this, "firstName");
private StringProperty lastName = new SimpleStringProperty(this, "lastName");
public Person(String firstName, String lastName) {
setFirsName(firstName);
setLastName(lastName);
}
public void setFirsName(String firstName) {
this.firstName.set(firstName);
}
public String getFirstName() {
return firstName.get();
}
public void setLastName(String lastName) {
this.lastName.set(lastName);
}
public String getLastName() {
return lastName.get();
}
public StringProperty firstNameProperty() {
return firstName;
}
public StringProperty lastNameProperty() {
return lastName;
}
}
:
public class TableViewOnScroll extends Application {
private ObservableList<Person> peopleToAdd;
private int start = 0;
private int step = 50;
@Override
public void start(Stage primaryStage) throws Exception {
TableView<Person> tableView = new TableView<Person>();
ObservableList<Person> displayedPeople = getInitialPeople();
peopleToAdd = getPeopleToAdd();
TableColumn<Person, String> firstNameCol = new TableColumn<Person, String>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
TableColumn<Person,String> lastNameCol = new TableColumn<Person,String>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
tableView.getColumns().setAll(firstNameCol, lastNameCol);
tableView.setItems(displayedPeople);
primaryStage.setScene(new Scene(tableView, 600, 400));
primaryStage.show();
// Be sure to put the listener after the stage is shown or the application will throw a NullPointerException
ScrollBar tableViewScrollBar = getTableViewScrollBar(tableView);
tableViewScrollBar.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
double position = newValue.doubleValue();
ScrollBar scrollbar = getTableViewScrollBar(tableView);
if(position == scrollbar.getMax()) {
if(step <= peopleToAdd.size()) {
displayedPeople.addAll(peopleToAdd.subList(start, step));
start = step;
step += 50;
tableView.scrollTo(start);
}
}
}
});
}
public ObservableList<Person> getPeopleToAdd() {
ObservableList<Person> people = FXCollections.observableArrayList();
for(int i = 0; i < 500; i++) {
people.add(new Person("Patty", "Johnson"));
}
return people;
}
public ObservableList<Person> getInitialPeople() {
ObservableList<Person> people = FXCollections.observableArrayList();
for(int i = 0; i < 50; i++) {
people.add(new Person("John", "Smith"));
}
return people;
}
private ScrollBar getTableViewScrollBar(TableView<?> listView) {
ScrollBar scrollbar = null;
for (Node node : listView.lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar) {
ScrollBar bar = (ScrollBar) node;
if (bar.getOrientation().equals(Orientation.VERTICAL)) {
scrollbar = bar;
}
}
}
return scrollbar;
}
public static void main(String[] args) {
launch(args);
}
}
getInitialPeople()とgetPeopleToAddの使用は()いくつかのランダムなデータをリストに移入するだけです。
関連する問題
- 1. スクロールマウスを使用すると、データベースからバックグラウンドでtableview JavaFXにデータをロードする
- 2. JavaScriptを使用したdivの後にボタンを表示
- 3. AxiosとReactのリストを使用したAPIデータの表示
- 4. GeoToolsを使用したJMapFrameでのPOSTGISデータの表示
- 5. クラスとDAOを使用したデータベースのデータを表示
- 6. Sysdateを使用した動的データの表示 - Oracle SQL
- 7. 複数のY軸を使用した動的データ表示
- 8. vuejsとaxiosを使用したJSON APIからのデータ表示
- 9. スムーズdivスクロール - スクロールマウスの右スクロール
- 10. フレックスボックスを使用してデータを表示
- 11. Linqを使用してデータを表示
- 12. JQuery:データを送信した後、別のページにダイアログを表示
- 13. Ajaxデータを使用したデータ型の応答詳細の表示
- 14. 成功したAJAXコールの後、IDでテーブルにデータを表示
- 15. MVCでSqlDataReaderを使用して表示するデータを表示
- 16. 外部キーを使用したリレーショナル表からのデータの表示
- 17. 表示データ使用htmlspeacialcharsが
- 18. isAllowedを使用した後にエラーメッセージを表示する
- 19. GLKViewでCIFilterを使用した後にCIImageを表示
- 20. ACSを使用したIdP認証後にSWTトークンを表示
- 21. jasperReportを使用してレポートを表示した後のGlassfishのシャットダウン
- 22. Includeを使用した後でListViewが表示されない
- 23. Yii2参加後のデータを表示
- 24. ActiveXを使用したモーダルダイアログボックスの表示
- 25. スプリングブートを使用したインデックスページの表示
- 26. AJAXを使用したページコンテンツの表示
- 27. コンストラクタを使用したモジュールパターンの表示
- 28. HTMLの表に表示するネストされたXMLデータを使用して
- 29. jmlとhtml5を使用してxmlの表示データをランダムに解析した後
- 30. WPFを使用した階層データ表示
スクロールバーが下にあるかどうかを調べることができます。本当の場合は、要素が残っていない限り、さらに多くの要素を 'TableView'に追加してプロセスを繰り返すだけです。 – aleb2000
[この例](http://www.superglobals.net/javafx-listview-lazy-loading/)が見つかりました。 これは 'ListView'を使用しますが、プロセスは同じです。 – aleb2000
よろしくお願いいたします。あなたが応答として追加することができます – Bartek