いいえ、私はGridPaneのバックテーブル実装を適切なTableViewに捨てました。VBox内のフィルタパラメータを使用したTableViewのフィルタリングJavaFX-8
この表では、左側の列はImageViewで、右側の列はラベル付きのVBoxです。
以下のコードは、データベースにデータを含まないように変更されています。
public ObservableList<Users> showUserData() {
for(int i = 0; i <= 5; i++) {
Image image = new Image("file:///" + [path to whatever image in your PC]);
VBox vbox = new VBox();
vbox.getChildren().addAll(new Label("Name: " + "a name"),
new Label("Username: " + "a username"),
new Label("Position: " + "a position"));
ImageView pic = new ImageView();
pic.setFitHeight(150);
pic.setFitWidth(150);
pic.setImage(image);
pic.setSmooth(true);
pic.setPreserveRatio(true);
users.add(new Users(pic, vbox));
}
return users;
}
これは、テーブルの実際の母集団が行われる初期化メソッドに渡されます。
ユーザークラスは、途中で次のようになります。
public class Users {
private ImageView userImage;
private VBox userDetails;
public Users() {
this.userImage = null;
this.userDetails = null;
}
public Users(ImageView userImage, VBox userDetails) {
this.userImage = userImage;
this.userDetails = userDetails;
}
public ImageView getUserImage() {
return userImage;
}
public void setUserImage(ImageView userImage) {
this.userImage = userImage;
}
public VBox getUserDetails() {
return userDetails;
}
public void setUserDetails(VBox userDetails) {
this.userDetails = userDetails;
}
}
プログラムが意図したとおり、私はイメージを持つテーブルとその中の詳細とVBoxのを見ることができます動作します。
ここでは、テーブルのフィルタリングを行うTextFieldを追加します。フィルタパラメータはラベル内のテキストです。
私はObservableListをFilteredListに配置し、次にSortedListに配置する必要があることがわかりました。
しかし、フィルタパラメータは、個々の列にVBoxコンテナの内部ではなく配置されているので、(私はちょうどそのダムだ場合を除き)、私はインターネット上で見るすべての例が適用されません。さらに、パラメータはラベルの中にあり、単純な文字列ではありません。
このチュートリアルではフィルタリングのためにhttp://code.makery.ch/blog/javafx-8-tableview-sorting-filtering/に行っています。
これはかなり特殊なケースだと思いますが、私はそれに固執することを要求しています。私は助け、ヒント、またはちょうどあらゆる方向の指示が必要です。ありがとう。
ちょっとした作業が必要でしたが、私はそれを実現しました。ありがとう!ところで、あなたは、あなたの操作を行い、行が挿入された後、テーブルを更新する方法を知っているではないでしょうか? –
あなたが観測可能な特性を使用してのような意味(http://stackoverflow.com/documentation/javafx/2229/tableview/7289/propertyvaluefactory#t=201703230612594013393/http://stackoverflow.com/documentation/javafx/2229/tableview/7288/ sample-tableview-with-2-columns#t = 201703230612594013393)?あるいは、javafx 8u60から始めると、すべてのセルを更新する 'TableView'に' refresh'メソッドがあります。 – fabian