問題タブ [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.

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

java - JavaFX ObservableList ベースの要素の奇妙な動作

同じジェネリック型に基づく要素がほとんどない (1 つの ListView、2 つの ChoiceBox) JavaFX アプリケーションがあります。

それらすべてを 1 つの obs で埋めます。リスト:

問題は、要素を 1 つの要素 (たとえば、departmentList) に追加するときです。

、選択ボックスにも自動的に追加され、リストビューと両方の選択ボックスに3つの重複したアイテムが表示されます。なぜそれが起こるのですか?オブス見てみました。ドキュメントをリストしますが、関連するものは何も見つかりませんでした。stackoverflowも検索しました。Employee クラスに equals/hashCode メソッドを追加しようとしましたが、影響がないようです。

さらに奇妙なのは、その同期が機能しなくなることがあるという事実です。同様に、前回起動したときは機能しましたが、今日では、選択ボックスに項目がまったく追加されていません (重複を防ぐために要素の 1 つにのみ要素を追加した場合)。したがって、何らかの理由で今日同期されていない場合は、コードを変更して、要素を選択ボックスに追加しようとします。次に、アプリケーションを起動すると、3 つの重複したアイテムが再び表示されます。コードを元に戻すと、アプリケーションは昨日のように機能します。それは非常に奇妙に聞こえますが、そのように機能します。

それで、問題は、なぜそれがランダムに起こる/起こらないのか、そして次回の起動が期待どおりに機能することを確認するためにそれを無効/有効にする方法です?

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

listview - 複雑なデータでJavaFX ListViewを使用するには?

私は を持っておりObservableList<Person>、 にPersonfirstNameとプロパティがあり (適切な JavaFX の方法で)、人々の名前を表示し、リストとリスト内の個々のオブジェクトのプロパティの両方の変更を反映するlastNameを作成したいと考えています。これはどのように行うのが最善ですか?2 つの問題があります。ListViewPerson

  1. ListView変更を更新できるように、2 つの名前のプロパティを監視する必要があります。これを行う 1 つの方法は、この回答で説明されています (この回答も参照してください)。ただし、この解決策では、「エクストラクタ」を のコンストラクタに渡す必要がありObservableList、私のリストは (より大きなデータ モデルの一部として) 既に存在します。既存のものをラップしてエクストラクタを追加する方法があると思う人もいるでしょうがObservableList、API には表示されません。(まあ、このメソッドListはありますが、ラップされているリストを ではなく単に として扱うObservableListため、元のリストへの更新は報告されません。の「同期された」ラッパーを作成するこのメソッドもありますObservableList、ただし、extractor パラメーターは含まれていません。) おそらく、このラッピングを自分で行うメソッドを実装する必要がありますか?

  2. Personのアイテムをレンダリングする必要がありますListView。カスタム クラスを使用してこれを行う方法は知っていますListCellが、文字列のみを表示しているので、もっと簡単な方法があることを願っています。に依存するPerson.toStringことは正しいことではありませPersonん. a (または同等のもの)を渡してアイテムを文字列に変換する方法はありますか?PersonStringListView<Person>Callback<Person,String>

つまり、1 で独自のラッパーを作成し、2 でカスタム セル ファクトリを使用します。 d think は比較的一般的な状況です。私が見逃している簡単な方法はありますか?

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

javafx - カスタム列の作成後に行を作成する

javafxでスコアボードを作成しています。
私のプログラムにはテーブルがあり、1 つの列はゲーム ID です。新しいゲームを押すと、最大 10 人のプレイヤーを追加できます。プレーヤーの名前を入力し、ボタンを押してプレーヤーをテーブルの列に追加します。以下に写真を用意しましたので、より明確に理解していただけます。

プレイヤーの追加

プレイヤーが列に追加された後

ここが私が立ち往生している場所です。行にゲームごとのスコアを追加する必要があります。プレイヤーの数に応じてカスタム数 (2 ~ 10) の列を生成しているためです。Score Class のスコア コンストラクターに必要なパラメーターの数がわからないため、このコードを使用できません。

3 人のプレーヤーが追加された場合、スコア クラスに 3 つの int パラメータを作成する方法はありますか? または、別の方法でこれにアプローチできますか?別のオプションとして、下に乱数を追加し、行を実際のスコアに合わせて動的に編集することもできますが、プログラムは列の数がわからないため、これも困難です。

私がどのように見えるべきだと思うかの例:

PS: 列を合計して合計スコアを表示する方法はありますか。合計を最後の行にしたいので、スコアを含む新しい行を追加しても、その行の下に合計が表示されます。

テキストフィールドから列にプレーヤーを追加するために使用されるコード:

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

java - ボタンなしでTableViewから特定のデータを削除しますか?

私はメジャープロジェクトのためにしばらくの間ソケットプログラミングを行ってきました。ここや他のブログからたくさん読んだ後、なんとかTableViewを作成しました。しかし、問題は私が TableView の API にあまり詳しくないことです。そのため、これは私にとって少し問題です。

これは初期化の一部です

そして、これが私の宣言です

今私が欲しいのは、接続が確立された場合(もちろん確立されます)、 パラメータとしてclient_handler呼び出されることです。sockここで、この靴下を IP アドレスとして TableView に追加します。しかし、方法がわかりません。

さらに、this接続が反対側から切断されたときにオブジェクトを削除するにはどうすればよいですかcatch(Exception e)?
後で、リスト全体をストリーム経由で他のクライアントに送信したいと考えています。では、明らかに1列しかないTableViewのすべての行をどのようにトラバースできますか。

今回は悪い投稿ではないことを願っています。:p

ObservableList<> は ArrayList とは異なることは知っていますが、このプロジェクトでは Swings から移植しようとしているので、jTable は ArrayList とうまく連携します。