問題タブ [treetableview]

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.

0 投票する
1 に答える
1031 参照

java - JavaFX の ListChangeListener.Change.getRemoved() は連続していないアイテムを返すことができますか?

問題

からアイテムが削除されると、削除の場所と削除されたアイテムのリストをObservableList示すchange イベントが発生します。ドキュメントには次のように記載されています。getFrom()getRemoved()

このgetRemoved()メソッドは、リストから置換または削除された要素のリストを返します。

そのように述べられていませんが、アイテムのリストが元のリストからの連続したサブリストであることを暗示していると思いました。私はその前提で多くのコードを書いてきましたが、現在、そのように動作しないTreeTableViewの選択モデルで問題が発生しています。

たとえば、3 つの「ノード」行を持つ単純なツリー テーブルを考えてみましょう。その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があります:

0 投票する
0 に答える
302 参照

javafx - JavaFX スナップショットのすべてのコンテンツ ツリー/テーブル ビュー

ツリー テーブル ビューのコンテンツを .png ファイルにエクスポートしたいと考えています。しかし、スナップショットを使用すると、スナップショットは画面に表示されているテーブルビューのみを取得します。この問題についてあらゆる形式を検索しましたが、解決策が見つかりません。どんな提案もできます。テーブルのすべてのコンテンツをpng(pdfまたはxlsファイルも)にエクスポートする方法

TableView 全体のスナップショットが役に立た ない

0 投票する
2 に答える
1322 参照

javafx-8 - TreeTableView は親行のセルを無効にします

treetableviewの親行で編集可能なセルを無効にするにはどうすればよいですか? 写真を見て、サンプルコードを確認してください。行が展開可能な場合、すぐに編集可能な行を無効にしたい(ルート行またはサブルート行)

この絵は正しい ここに画像の説明を入力

しかし、これは正しくありません ここに画像の説明を入力

**コード例**

それを実行して、ルート項目をダブルクリックするだけです

make-individual-cell-editable-in-javafx-tableview テーブルビューで はソリューションが機能することを確認しましたが、ツリーテールビューでは機能しません。

0 投票する
0 に答える
511 参照

javafx - オーバーライドされたセル ファクトリを使用して TableView/TreeTableView からコピーする

/から「見たとおりに」データをコピーする普遍的な方法 (つまり、任意のTableVieworに適用できる) を探していました。(hereおよびhere )からコンテンツをコピーする方法に関するいくつかの投稿を見つけましたが、「ご覧のとおり」重要な部分はそれらすべての問題です。TreeTableViewTableViewTreeTableViewTableView

私が見たすべてのソリューションは、各セルに関連付けられたデータを取得し (実行するのは非常に簡単です)、それを呼び出すことに依存してい.toString()ます。問題は、1 つの型 ( a としましょうLong) を実際のデータとして列に格納し、それを a として表示するカスタム セル ファクトリを定義するString場合です (それを行う理由の範囲を超えています。メソッドが必要なだけです)。このようなテーブル ビューで動作します):

Long基になるデータ (ここにあります)の変換に基づくこれらのメソッドは、明らかに機能しません。これは、日付ではなく数値Stringをコピーするためです(ユーザーがテーブルに表示するもの)。

可能な (想定される) 解決策:

  1. TableCell表の各セルに関連付けられたオブジェクトを手に入れることができれば、それでTableCell.getText()完了です。残念ながら、TableViewこれは許可されていません (それを行う方法を見逃していませんか?)

  2. CellFactory列に関連付けられた を簡単に取得できるため、新しいTableCell(テーブル ビューに存在するものと同じ) を作成できます。

    TableCell<T, ?> cell = column.getCellFactory().call(column);

    問題は、a にメソッドを強制的TableCellに呼び出すupdateItem方法がないことです (繰り返しますが、見逃しましたか?)。を使用しようとしましたcommitEdit(T newValue)が、かなり面倒です。内部にチェックがあるため、すべてのもの (列、行、テーブル)を作成し、最初Editableに呼び出す必要があります。startEdit

    2a. したがって、私にとって有効な唯一の解決策は、 Reflection を使用して protected を呼び出すことですupdateItem。これは、一種の汚いハッキングのように感じます。

    /li>

それについてコメントをいただければ幸いです。つまり、これがより少ない血液で達成できるかどうかです。または、私が見逃したソリューションの問題を示している可能性があります。

誰かがそれを使いたい場合の完全なコードは次のとおりです(その醜さにもかかわらず:)

次に、使用法は非常に簡単です。

ありがとう!

0 投票する
1 に答える
340 参照

java - ソースの変更後に TreeTableView の選択に null 値が含まれる

基本値のリストは、(変化する) 述語によってフィルタリングされます。はs にFilteredListマップされTreeItem、この結果のリストはルートTreeItems の子として使用されます。

で選択が行われたTreeTableView後、述語が変更された場合、選択された項目にアクセスするとNullPointerException.

変更に含まれる項目は のようですnull。この大雑把なコンセプトに設計上の欠陥はありますか?

これは、クラスおよびでは発生しませんTreeViewListView

マッピングにhttps://github.com/TomasMikula/EasyBindを使用して MCVE を作成しようとしました。

0 投票する
1 に答える
771 参照

javafx - JavaFx TreeTableView リアルタイム データ

問題 - TreeTableView にリアルタイム データを入力できません。データは外部ソースからのものであり、リアルタイムで TreeTableView に表示する必要があります

以下は、コードの簡潔な部分です。ノードを使用してツリー テーブル ビューを作成できます。テストのために、乱数ジェネレーターを作成し、それをテーブル ツリー ビュー フィールドにバインドしました。これが正しいアプローチかどうかはわかりません。

問題を明確に説明できたことを願っています。ご案内をお待ちしております。

FXML:

コントローラ:

テスト目的で、FXML にボタンを追加し、以下のコードをリンクして、乱数ジェネレーターを追加して、取得する予定のリアルタイム データをシミュレートしました。アイデアは、乱数が値を生成するため、開始ボタンを押した後、最新の列の値に値が表示されるはずです。今のところ、Latest では機能しないため、High & Low 列に値を渡していません。

0 投票する
1 に答える
303 参照

javafx - javafx TreeTableView が更新されない

私は問題の調査に数時間を費やしましたが、それについて理解することができません。このリンクそのリンクは既に見つかりましたが、そこでの提案に従ったと思いますが、TreeTableView は更新されません。

私は、initialize-Method を使用して cell- および cellValue-Factories を設定するコントローラーを持っています。

refreshTreeTableViews() では、いくつかの項目を TreeTableView に追加しています。TreeItemPropertyValueFactories の場合、これは正常に機能し、TreeTableView が表示されるとすべてが正しくレンダリングされます。ただし、ShowFinancialBookingsCell() があるセルは、最初はレンダリングされません。上下にスクロールすると、非表示になっていた TreeTableView の一部が再び表示され、ShowFinancialBookingsCell() が正しく表示されます。

このため、refreshTreeTableViews() 関数の後に TreeTableView を更新しようとしましたが、何も変わりませんでした。

ShowFinancialBookingsCell のコードは次のとおりです。

}

カスタムセルで私が間違っていることを知っている人はいますか? 他のセル (TreeItemPropertyValueFactory を持つ) は適切にレンダリングされます。

0 投票する
1 に答える
2538 参照

javafx - JavaFX TreeTableView は、折りたたむときにアイコンを残す

TreeTableViewすべてのノードにアイコンがある場所があります。ツリーを展開するとすべてが完全に機能しますが、ツリーを折りたたむと、表示されなくなったアイテムのアイコンが残ります。

行とテキストは削除されますが、アイコンは「フリーフローティング」のままです。スクリーンショットTreeTableViewでは、正しいテキストで展開された 1 回と、残りのアイコンのみが表示された 1 回の 2 回表示されています。

正しく展開された TreeTableView と壊れた折りたたみ状態のスクリーンショット

上のスクリーンショットは、次の最小限の例から作成されたものです (独自の を追加するだけで済みますicon.png)。

LinuxでOpenJDKとOracle Java 8u92を使用し、WindowsでOracle Java 8u92を使用してこれを試しました。

0 投票する
1 に答える
1441 参照

java - 階層データを作成し、JavaFX で TreeTableView に追加する

私はプログラミングを始めたばかりで、Single Transferable Voteを使用して投票をカウントするためのJavaでプログラムを書いています。次のようなExcelファイルに入力データがあります。

これ

ここで、候補者の名前はその下の番号にマップされ、HashTable行 2 の下のすべての行は、左から右への 1 つの有権者の好みを表します。

TreeTableView次のような名前と投票を追加したいと思います。

これ.

各候補が第 2 選好のルートである場合、各第 2 選好は第 3 選好のルートであり、各第 3 選好は第 4 選好のルートです。

ライブラリを使用apache.poiしてExcelファイルを使用しています。シートから階層データを表現する方法と、それを に追加する方法に関するヒントを探していますTreeTabeView。どうすればこれを行うことができますか?

これが初心者の質問である場合は申し訳ありません。階層データの使い方がよくわかりません。前もって感謝します!