問題タブ [observablelist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javafx - JavaFX : マウス クリックで VBox を強調表示し、フォーカスされていないときに色を変更します
マウス クリック イベントを作成するときに VBox の背景 (フォーカスされた) 色を変更したいのですが、他の (兄弟) ものは他の (フォーカスされていない) 色に変更する必要があります。
だから、私はこの下のようにコーディングしました..
まず、いくつかの VBox を使用して ObservableList を作成します。
ただし、menuVBox1 をクリックすると、null ポインター例外が発生します。
これを助けてください..
java - コレクタ ラムダは観測可能なリストを返します
コレクタが ObservableArrayList を返すことは可能ですか? このような少し:
javafx - フィルター TextField にテキストが入力された場合、ListView に変更はありません
編集 --- Object クラスを表示し、initialize メソッド内にコードを追加し、以前のフィルター メソッドを削除し、FXML から TextField の OnAction を削除しました。---
これを理解しようとする私の最初の試みは、多くの Android の問題を引き起こしたので、ここにいます。
JavaFX、Scenebuilder、FXML を使用して簡単な GUI を作成しました。この GUI は、プラント ショップの在庫をシミュレートし、ファイルに追加/削除/表示/保存することができますObservableList
。String
また、ユーザーが に入力したパーシャル に基づいてオブジェクトをフィルタリングすることも想定されていますTextField
。
これは、すべてコマンドライン経由だったので、このプログラムの以前の化身では簡単でした。しかし、今まで見たことのない新しい問題に遭遇しました。
各オブジェクトは、疑似乱数の ID 番号とユーザー指定の接頭辞 (花の場合は F、雑草の場合は W、ハーブの場合は H、真菌の場合は Fn)、名前、色、および「棘」、「香り」などのブール属性を使用して印刷されます。 、「食用」など。それらはラジオボタンによって決定されます。たとえば、ユーザーが新しい花のすべての値を入力すると、次のように出力されます。
これが私の最初の ObservableList と FilteredList です。
以下は、Plant クラスと 1 つのサブクラス (まったく同じものが 4 つあります) で、それらがリストにどのように表示されるかを示しています (ブール値はラジオ ボタンです)。
サブクラス
これは、以下の回答の提案のおかげで、初期化メソッド内にあるものです。問題は、何も変わらないことです:
これに関する私の目標は、新しいシーンでアイテムをフィルタリングして表示するボタンを使用するのではなく、ObservableArrayList をリアルタイムでフィルタリングすることです。私はこれが実装されているのを見てきましたが、その機能が本当に気に入っています。
提供されたヘルプに感謝します。
javafx - オブザーバブル リストのコピーを維持する
テーブル ビューでやり直し機能を作成しようとしています。このために、観察可能なリスト(テーブルビューデータ)のコピーを作成し、それを元の状態に維持して、さらに参照できるようにしました。
に加えた変更は、 ではなく にtable
のみ反映されるはずです。しかし、どちらのリストにも更新されたデータが含まれています。tableData
originalList
コンソールの出力は
更新されるべきではない元のコピーを維持するにはどうすればよいですか?
PS: Observable リストtableData
を入力として持っているだけです。値を取得したソースが何であれtableData
、同じソースを使用して を埋めることはできませんoriginalList
。
javafx - 読み取り専用のオブザーバブル リストを作成することは可能ですか?
私は観察可能なリストを持っていますObservableList<Integer> list = FXCollections.observableArrayList()
。
getter メソッドでlist
、次のような読み取り専用の監視可能なリストを返したい:
次に、読み取り専用リストをリッスンします
したがって、基本的には、元のリストと同期された ObservableList リストを返したいので、ユーザーはListChangeListener
変更イベントを登録して監視できますが、同時にユーザーが元のリストを変更することはできません。
java - JavaFX の ListChangeListener.Change.getRemoved() は連続していないアイテムを返すことができますか?
問題
からアイテムが削除されると、削除の場所と削除されたアイテムのリストをObservableList
示すchange イベントが発生します。ドキュメントには次のように記載されています。getFrom()
getRemoved()
この
getRemoved()
メソッドは、リストから置換または削除された要素のリストを返します。
そのように述べられていませんが、アイテムのリストが元のリストからの連続したサブリストであることを暗示していると思いました。私はその前提で多くのコードを書いてきましたが、現在、そのように動作しないTreeTableView
の選択モデルで問題が発生しています。
例
たとえば、3 つの「ノード」行を持つ単純なツリー テーブルを考えてみましょう。その3行を選択すると...
...次に、中央の行だけをクリックして選択します...
...発生する変更イベントはtreeTableView.getSelectionModel().getSelectedItems()
次のようになります。
単一の変更イベントで、「ノード 1」と「ノード 3」がselectedItems
リストのインデックス 0 から削除されたことを報告します。
オブジェクトには、呼び出しでChange
区切られた 2 つの個別の削除イベントがあると予想していました。next()
への最初の呼び出しnext()
は、「ノード 1」がインデックス 0 で削除されたnext()
ことを通知し、2 回目の呼び出しは、「ノード 3」がインデックス 1 で削除されたことを通知します。一度。
質問
getRemoved()
連続していないアイテムを本当に返すことができますか? これは、リスト変更イベントがどのように機能するかについての私の誤解ですか、それとも のバグTreeTableView
ですか?
通常、私は標準ライブラリのせいにするのを躊躇しますが、JavaFX で見つけたバグはこれが初めてではないので、考えられないことではありません。
アップデート
への呼び出しを追加するとsetShowRoot(false)
、動作が変わります。予想どおりの結果が得られました。削除は2つの部分に分かれています。
また、ここに私のMCVEがあります:
java - ファイルタイプを持つフォルダーのみを含めるようにローカルファイルシステムをスキャンする TreeView を構成する
わかりましたので、このWebサイトの2番目のコードブロックを使用しました http://www.java2s.com/Tutorials/Java/JavaFX/0660__JavaFX_Tree_View.htm「次のコードは、ローカルファイルシステムから動的ツリーを作成します」と述べています
ニーズに合わせてカスタマイズするために、このコードがどのように機能するかわかりません。特にオーバーライド方法については、「mp3ファイルを含むサブディレクトリにのみフォルダーを追加する」と追加できる場所がないようでした。フォルダーを通過して削除するものなど、より複雑なものが必要になる可能性が高いと思います。正直なところよくわかりません。
mp3 ファイルを表示するプログラムでこのコードを使用しようとしました。アイデアは、2 つの treeView を並べて配置することでした。左側には、mp3 ファイルが含まれるフォルダーへのフォルダーの階層が表示され (mp3 ファイルが含まれていない他のフォルダーは表示されません)、右側にはファイルが表示されます。これらのフォルダーにはmp3ファイルタイプのみがあります。さらに下にスクリーンショットがあります。
これは、VBox で TreeView を返すこれまでのコードです。コメント アウトされている 2 つのコード セグメントがあります。1 つ目は、ディレクトリとサブディレクトリ内の名前に従って java: search fileが C: ドライブを検索したくないという事実によるものです。(何故かはわからない)。そこで、D: (パーティションドライブ) のみをスキャンするように変更しました。2 つ目は、コードのメイン セグメントを取得した Web ページからのものです。このコードは、処理する外部クラスに移動されました。複数のドライブを処理する生意気なコードと同様に。
java - 複数のクラスからのデータを含む Javafx テーブルビュー
テーブルビューに1つのクラスの異なるデータを入力しても問題ありません。しかし、複数のクラスではうまくいきません。それを解決する方法はありますか?同様の質問をstackoverflowでチェックアウトしました。しかし、それらのどれも私を助けることができませんでした。「Callback」クラスについて何か提案があれば、完全なインポートを提供してください。いくつかの Callback クラスがあるからです。
追加の質問: TableCell の HashSet でインスタンスの特定の属性を表示するにはどうすればよいですか。したがって、TaskControl クラスに HashSet があります。その HashSet には、クラス「ProjectControl」のインスタンスがあります。ProjectControl のすべてのインスタンスには、「name」や「id」などの属性があります。
可能であれば、プロジェクト インスタンスのすべての名前を 1 つのテーブル セルで表現したいと考えています。おそらく、コンマで区切られた文字列として(project1、project2、project3 ...)。
Task クラス (大幅に短縮) my TaskControl クラスはこのクラスから継承します
javafx - テーブルが新しい行で更新されない
私は最終的にコンテンツを自分のテーブルに入れました (私は何年にもわたってその謎をマスターしてきたからです!)。ここで、新しいアイテムをリストに追加し、テーブルを自動的に更新したいと思います。ObservableList がそのトリックを行うと思っていましたが、それ以上のものがあるようです。解決策を教えてもらえますか?
コントローラ クラス:
FXML: