実行時に異なる種類のオブジェクトを保持できるTableViewを持つことは可能ですが、一度に1種類のオブジェクトのみを保持できますか?アプリケーション全体の異なるオブジェクトのTableView
私が直面している特定のケースは、検索の結果を表示するために使用したいTableViewです。これらの検索は、結果として異なる「オブジェクト」を生成する可能性があります。義務的なPerson
とAddress
としましょう。ユーザーがどちらかを検索すると、結果はPerson
またはAddress
のいずれかのセットになります。
検索後、テーブルはそれに応じて変更されます(getItems().clear();
とgetColumns().clear();
)しかし、私はすでに充填を実装に固執しています。
FXMLで初期化されたTableView<?> searchResults
と宣言されたTableViewを取得しました。今、私はテーブルにnew TableColumn<Person, String>
を追加しようとしたとエラーに直面:だから、これは明らかに動作して表示されません
'add(javafx.scene.control.TableColumn<capture<?>,?>)' in 'java.util.List' cannot be applied to '(javafx.scene.control.TableColumn<de.wolfsburg.stadt.beurteilungFX.controllers.tabletypes.CheckNote,java.lang.String>)'
を。
私が得たクラスは両方とも同じインターフェイスを実装しているので、私はまたTableView<? extends MyInterface>
とTableView<MyInterface>
としてTableViewを宣言しようとしましたが、どちらの場合も成功しませんでした。
同じインターフェースを実装していますが、フィールドの数とフィールドの名前がクラスによって異なります。
もう一度質問:同じクラスと複数のクラスの複数のオブジェクトをサポートするTableViewを持つことができますか?
注:私は研究中にthis questionを見つけましたが、私は同じクラスのオブジェクトを最初に要求し、後でクラスの変更を求めるのに対し、異なるクラスについては同時に質問しているようです。
確かにもう1つの方法は、同時に2つの文字を隠すことです。しかし、これは、10以上の異なるクラスをサポートする必要がある大きな用途では、多くのメモリを消費することになります。
'TableView 'を使っても問題ありませんが、テーブルを置き換えるだけではどうですか? –
'TableView'はまだ 'TableColumn 'を受け入れません。テーブルを置き換えるというアイデアは何ですか?私が最後に言いました?私はこのようなことをやりたいと思っていたので、アプリケーションがアップグレード/拡張されるにつれ、私は説明された問題に直面したくありません。置き換える場合、新しいTableViewを作成することは、宣言された型が同じままで上記の列を受け入れないため、どちらも機能しません。私は、Interfaceがフィールドの数とそれらの名前に責任を負わないことに注意しました。 –
geisterfurz007
'TableView'をお持ちの場合は、 'TableColumn '(または他のカラムタイプ)を使用する必要があります。テーブルを置き換えることによって、私はUIから完全に 'TableView 'を削除し、それを表示したいときは新しい 'TableView 'を追加することを意味しました(例えば)。表示されていないテーブルをメモリに保持する必要はありません。 –