問題タブ [tablemodel]
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.
java - Java: オブザーバー パターンとガベージ コレクター
レジスタが PropertyChangeEvents を起動する TableModel を実装しました。私の TableModel は、これらのイベントをリッスンして、基になる JTable を更新するために TableModelEvents を起動します。
TableModel が新しいレジスタでクリアまたはリフレッシュされた場合...GC がそれらのレジスタを収集できるようにするために、TableModel は各レジスタで「removePropertyChangeListener」メソッドを呼び出す必要がありますか?
これらのレジスタへの別のライブ参照がないと仮定します。
java - JXTreeTable から選択した値を取得
私はtreetable
使用を構築しており、選択した値に応じてアイテムJXTreeTabble
を無効/有効にしたいと考えています。menu
だから、私はこのコードを私の中に入れようとしましたtable model
:
問題
上記は、の内容がtable
展開されていない場合にのみ機能します。index
のは のselected row
よりも大きい可能性があるためsize
ですable model
(モデルには 2 つのアイテムを含めることができ、すべてを展開すると行には 10 のアイテムを含めることができます)。また、 のobject type
は とparent
は異なりchildren
ます (チャプターを持つ本を子と考えてください)。
上記を正しく行う方法として何を提案しますか?
java - JTableセルを編集不可にする
ユーザーがダブルクリックしたときに、JTableのすべてのセルを編集できないようにしようとしています。私は多くのフォーラム投稿を読みましたが、一般的なコンセンサスは、新しいテーブルモデルクラスを作成し、DefaultTableModelを拡張してから、メソッドisCellEditable(int row、int column)をオーバーライドすることです。私はこれをすべて実行しましたが、プログラム(アプレット)を実行すると、セルに何も表示されません。注今学期には、アプレットが古くなっているとは思わない教授がいます...
テーブルモデルのコード:
うまくいけば、JavaGurusが私のエラーを見つけることができるでしょう:)
swing - JTable - 行を追加した後に TableColumns を保持しないのはなぜですか?
私は JTable を使用しています:
問題は、モデルに行を追加するたびに、TableColumnModel がデフォルトに戻ったように見え、すべての列の幅が同じになることです。
swing - テーブルモデルとオブザーバブルを一緒に使用する方法を理解できない
私はいくつかのかなり複雑なデータを持っており、保持しようとしているデータ内に一対多の関係があるため、ハッシュテーブルを含む他のクラスを指すハッシュテーブルに現在存在しています。
世界の反対側には、データ モデルとの接続がないことを除いて、非常にうまく機能するテーブルがあります。独自のテーブルモデルがあります。私はそれを非常に簡単な方法で作成します-
私のタブレットのデータ モデルは非常に単純です。
行の追加や削除なども行う必要がありますが、この単純なデータ モデルを使用すると、ほとんどの作業が自動的に行われます。
また、マウス リスナとセル レンダラーも実装して、列のヘッダーをクリックするとアクティブになり、隣接する列のセルが別の色で再描画されて、編集できなくなったことを示します。
ここまでは順調ですが、私のインターフェイスでは、最初のテーブルの結果をまとめた 2 番目のテーブルがあります。3 行だけで、ヘッダーはありません。私がそれを作ったとき、私は必要以上の仕事をしたかもしれないと思います。
これにより、素敵なテーブルのセットが得られます。想定どおりに色が変更され、データが有効な値に制限され、適切にフォーマットされます (一覧にないレンダラーを使用)。
しかし、これが起こるはずです-ユーザーがテーブル1の列1に値を入力すると、列1のすべての値を合計し、テーブル2の列1の値を出してから、すべての値を再計算する必要がありますこの新しい値に基づく表 1 の列 2。
逆に、列 2 がアクティブな列で、ユーザーがテーブル 1 の列 2 の値を変更した場合、テーブル 2 の列 1 の値を取得し、それを使用してテーブル 1 の列 1 のすべての値を再計算する必要があります。また、列 2 の値を合計して、表 2 の列 2 に配置します。列 2 の数値の合計が 100 を超えるような新しい値をユーザーが入力できないことに注意してください。
表 2 を編集することもできますが、その場合、表 1 のすべての値を計算する必要があります。
だから...私には、オブザーバブルが必要であり、オブザーバーとオブザーバブルのコントローラーの両方としてテーブルを登録する必要があるように思えます。したがって、オブザーバブルを作成できますが、まだ 2 つのテーブル データ モデルもあります。私はたくさん読んできましたが、私が見つけたすべての例は、テキストフィールドやテーブルモデルなどの単純なもので使用されているオブザーバブルで示されていますが、Observable クラスは使用されていません。もう 1 つの問題は、既定のモデルが既定で喜んで行ってくれるクールなこと (行の追加や型のチェックなど) のほとんどを行う方法がわからないことです。
プロジェクトにまったく新しい次元の複雑さを追加する前に、誰かが私にいくつかの指針を与えることができますか? 行や列の概念をほとんど持たないデータ モデルをテーブル データ モデルと混在させるのは簡単で、デフォルトのテーブル モデル操作をすべて書き直す必要はありませんか? 現時点では、プロセス全体が信じられないほど複雑に思えます。これがどのように機能するかについて、明確な説明がどうしても必要です。
java - 同じデータセット、2つの異なるJTable
2つのJTableを介して表示する必要のあるデータがいくつかあります。データは同じですが、テーブルごとに少し異なって表示する必要があります。また、外部接続(この場合はJMSですが、実際には問題ではなく、DBなど)からデータを受信します。
私はSwingを初めて使用するため、誰がイベントを発生させるか、誰がイベントをリッスンするか、データセットを変更するために両方のテーブルを更新する方法について、まだ少し混乱しています。
さて、私のデータセット構造の小さな例といくつかのダミーデータ:
基本的に、私のデータセットはclasses
Controllerクラスのフィールドになり、2つのJTableは異なる方法で物事を表示する必要があります。つまり、Table1は次のようなものを表示する必要があります。
つまり、基本的に、各クラスルームのコースのリストです。
Table2は、代わりに次のようなものを表示する必要があります。
すべての教室から、すべての生徒に会う必要があります。
ご覧のとおり、データは同じですが、表示方法が異なります。私がやりたいのは、データが変更されると、テーブルも自動的に更新されるということです。これまで理解してきたこととして、AbstractTableModelをサブクラス化し、表示したい種類のデータ用に2つの異なるTableModelを作成する必要があります。私が得られないのは:
- 何らかの変更が発生した場合、モデルはどのようにデータを取得しますか?
- 誰がこの変更をモデルに通知する必要がありますか?
- 「fireTableXXXEvent()」を呼び出してビューの更新をトリガーするだけで十分ですか?
私は自分自身を十分に明確にしたことを願っています...とにかく、どうもありがとうございました!さよなら
java - jtableからAbstractActionを削除します
Ok。起動時に特定のjtableが作成され、再構築されない大規模なプロジェクトがあります。テーブルモデルが更新され、さまざまなユーザーアクションに基づいてテーブルが再描画されます。
AbstractActionとともにセルの変更に反応するカスタムTableCellListenerクラスを追加しました。これは、テーブルにデータが最初に入力されたときに実行されるコードです。(「firstLoad」チェックがないと、テーブルが再描画されるたびに複数のアクションがアタッチされていました)。
TableCellListenerは、 Rob Camickによってここに投稿されたカスタムリスナーであり、「sayIt」ビットは私自身のデバッグコードです。
これはすべてうまく機能しますが、テーブルが再構築されるたびにリスナーを完全に削除して、最後に選択したセルの値を「記憶」しているため、再度追加したいと思います。これは、テーブルデータが新しいため無効になっています。
'removePropertyChangeListener()'タイプの呼び出しでそれができると確信していますが、リスナーを引数として想定しているため、それを見つける方法がわかりません。
java - セルエディタでアクションが呼び出された後、セルは更新されません
セルレンダラーを備えたテーブルを使用しています。このテーブルを使用すると、各セルに値の付いたボタン「x」を配置して、ボタンを押すことでセルの値を削除できます。セルエディタはアクションリスナーをボタンに割り当て、ボタンが押されると適切なアクションが呼び出されます。
DefaultTableModelであるテーブルモデルのすべての列には、値の配列リストが入力されます。ボタンを押すことで配列リストから正しい値を正常に削除でき、変更後にテーブル内の他のすべてのセルが更新されますが、値が削除されたセルは変更されません。アプリケーションを再起動するか、配列リストに値を追加すると、テーブルが期待どおりに更新され、すべてが正常に表示されます。
Moの問題は、セルレンダラーがセルの初期値を忘れないように見えるため、テーブルが再描画されてもこの値をセルに出力し続けることです。値が正しく表示されるようにテーブルを適切に更新する方法を誰かが知っていますか?
テーブルクラス:
セルエディタクラス:
前もって感謝します
java - JTable からデータをクリアするには?
私は Netbeans でプログラミングしており、フレームに jTable があります。
多くの行を占めるデータをロードしますが、その後、行数がはるかに少ない別のテーブルをロードします。
そして、それを実行して2番目のテーブルをロードすると、最初のテーブルにあった余分な行がまだそこに表示されます。そして、2番目のテーブルを見たいだけです。
私はすでに試しましたjTable.removeAll();
java - JTablesで使用できる汎用のTableModelはありますか?
現在、JTableを調べており、Hibernate + SpringDataJPAを使用してDBから取得する多数のビジネスオブジェクトがあります。
Spring Data JPAがDALの面倒な実装をすべて処理するのが大好きで、に似たものがあるかどうか疑問に思っていましたTableModel
。
基本的に、私は次の線に沿って何かを持っているでしょう:
public class GenericTableModel<T> extends AbstractTableModel
そして、GenericTableModel
リフレクションやアノテーションを使用してを調べますT
。
このようなものはありますか?JTableに表示するオブジェクトごとにTableModelを用意する必要がないことを願っています。