問題タブ [abstracttablemodel]

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 投票する
2 に答える
1597 参照

java - 非AWTスレッドのAbstractTableModelのデータを更新するためのベストプラクティス

AbstractTableModelのモデルとして使用するためにサブクラス化しましたJTable。データが追加されるたびfireTableRowsInserted()に、AWTスレッドを呼び出します。基になるコンテナへのすべてのアクセスは、同期されたメソッドを使用してスレッドセーフになります。

このパターンは、これまでのところうまく機能しています。ただし、スレッドの問題があることに気付いたリストからデータを削除したいと思います。行を削除fireTableRowsDeleted()してAWTスレッドを呼び出すとgetValueAt()、現在は存在しない行インデックスの呼び出しを取得できます。

AWTスレッドの外部のテーブルモデルで操作を実行するためのベストプラクティスは何ですか?

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

java - TreeMapを使用したAbstractTableModelinsertRow()を実装する方法の裏付けとして

insertRow機能を実装しようとしているテーブルモデルがあります。最終的には、テーブルに上から行を追加できるようにしたいので、新しく追加された行を表示するたびに下にスクロールする必要はありません。これを実装する方法を理解するのに苦労しています。位置0に新しい行を追加するたびに、他のすべてを1つインクリメントする必要があるため、マップはあまり効果的ではないと思います。したがって、行を追加するたびに、すべてを1つ下げる必要があります。 。これは、テーブルが大きくなると非常にコストがかかるように思われます。下部に値を追加するときは、その行を更新するだけです。だから、私の質問は、AbstractTableModelにこれを実装するための最も効率的な方法は何ですか?

0 投票する
6 に答える
19305 参照

java - 既存の TableModel に列を追加する

クラスがあります。

ResultSetMetaData を使用して、データベースからの結果セットと一致するように TableModel を構築します。

クラス Bでは、JPanel を拡張し、クラス Aを追加してテーブルを表示しました。条件に基づいて新しい列をテーブル モデルに追加できるようにしたいと考えています。DefaultTableModel私はグーグルで試してみましたが、示されているほとんどの例はnotに基づいていAbstractTableModelます。

これを達成する方法を知っている人はいますか?

0 投票する
5 に答える
2144 参照

java - ArrayIndexOutOfBoundsException: JTable 作成/テーブル変更で -1

あたかも私の問題を解決できるかのように見えるすべてのスレッドを読み、ここにあるすべての回答も読みましたが、私はまだ機知に富んでいます. 例外がスローされる理由はわかりませんが、これはthreading. 含まれている場合は、 をどこに含めるべきか、またはを含めるnew Runnable()かどうかを教えてください。invokeLater()invokeAndWait()

例外につながるコードとスタックトレース (以下) を提供する間、しばらくお待ちください。

編集:が呼び出される直前sysoのセクションにいくつかの sが含まれていましたが、それらはコンソールに表示されません。したがって、アプリケーションがその時点に到達する前、つまり、から呼び出されたとき、またはデータとテーブル モデルがインスタンス化されるとき...AnnoTabletableChangedAAView

EDIT II:問題は上書きされたtableChanged方法でした。それは明らかに例外を発生させます。呼び出しも削除しましたtableChanged()(違いはありません)。AnnoDataここで、もう 1 つの問題があります。基になるデータ ( ) の変更によってテーブルが自動的に更新される仕組みを理解することです。これはおそらく別のクエリ (拡張された Google 検索の後) のためのものですが、このスレッドを読み続けるので、お気軽にこのスレッドに役立つコメントを投稿してください...すべての役立つコメントとヒントに感謝します!

編集 III:*問題を解決しました。から別のオブジェクトをインスタンス化しAnnoData、それを の新しいインスタンスに渡し、AnnoTableModelこのインスタンスをテーブルと THEN に設定する必要がありましたfireTableDataChanged()

EDIT IV:わかりましたので、fireTableDataChanged()(EDIT III で使用されているように) 結局不要です。常に新しいオブジェクトを作成するのではなく、引き続き使用したいと思います。新しい質問をする必要があると思います...ありがとう!

のこのメソッドは、AAViewを拡張するオブジェクトを作成し、JTableそれを に配置する必要がありますJScrollPane(後者は機能します)。

これがクラスですAnnoTable(aamethは、データ モデルにアクセスするためのビジネス ロジックを含むインスタンス オブジェクトであり、正常に動作します)。

AnnoTableModel()( のかなり一般的な拡張であるAbstractTableModel) またはAnnoData( をVector含むを構成し、列のタイトルVector<Object>を表す)のソース コードが必要な場合は、String[]お知らせください。

これがスタックトレースです。

私がEDT学んだことから、これは実際にはスレッド化の問題である可能性があります。ただし、新しいを開始する場所を見つける方法がわかりませんThread(またはnew Runnable().

ちなみに、例外は、ではなくAnnoTable拡張に変更したときにのみ表示され始めました。もともと、テーブルを作成するだけでなく、スクロール ペインでラップして、これを新しい .xml に追加していました。しかし、 (メソッドも備えている)しか知らないクラスからやりたかったので、以前はうまく機能していましたが、正しい方法でやりたかったのです。マーフィーの法則?JTableJPanelAnnoTableJPanelfireTableDataChangedAAViewsetAnnoTable()

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

java - Java AbstractTableModel repaint();

テーブルモデルに印刷するデータを更新するのに問題があります。

テーブルモデルであるクラスAgendaTableModelと、メインUIであるクラスScreenがあり、[Listar Contatos]ボタンを押すと、テーブルモデルがJFrameの中央のJScrollPaneに表示されますが、空白のままです。

何が問題なのか?

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

java - JTableが表示されない

私のアプリケーションでは、すべてが配布されます。

  • アクションで、アプリケーションはDBからデータを取得し、に保存しArrayList<T>ます。
  • RelativeTableModelを渡す場所のオブジェクトを作成しますArrayList<T>

    • inを持つBrowseListPanelクラスがあります。そのインスタンスは、メインアプリケーションですでに作成されています。JTableJScrollPane
    • モデルを渡してBrowseListPanel、最後にパネルを表示します。

コード:

しかし、私は見ていませんTableBrowseListPanel(を含む)のオブジェクトJTableはすでに作成されており、後でTableModel追加されると思います。したがって、ある種のイベントがで発生する必要がありますsetTModel()

私は正しいですか?その場合、どのイベントをスローする必要があり、その実装は何である必要があります。

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

java - Swing : 複数のオブジェクトに対して単一の AbstractTableModel ??

DB からのデータを に格納するために使用されるさまざまなオブジェクトがありますArrayList<T>。それぞれのレコードをテーブルに表示する必要がありました。私AbstractTableModelは作業中の最初のオブジェクトに使用します。AbstractTableModelクラスにはArrayList<Relation>およびのString[]ヘッダーがあります。

AbstractTableModel私の質問は次のとおりです。すべてのオブジェクトに使用できる同じものを作成するにはどうすればよいですか。つまり、Relation を使用する場合は を使用できArrayList<Relation>、Product を使用する場合はArrayList<Product>.. を使用できます。私によると、それぞれに異なるものを書くことAbstrastTableModelは良い考えではありません。主な問題はsetValueAt、、、....getValueaddRow

すべての人に役立つ単一のモデルとして、これに取り組むことをお勧めします。また、ここからテーブルのイベントを発生させることもできます。

私はそれが少し複雑であることを知っています。しかし、構造は広大でAbstractTableModelありJTable、各オブジェクトの新しいクラスを作成することもお勧めできません。

何を指示してるんですか ?

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

swing - JTable AbstractDataModel の 1 回のパスで複数の行を削除する

Jtable と dataModel に問題があります。私のテーブル モデルは AbstracttableModel を拡張し、データは Vector に格納されます。私は、1つ以上の行を削除すると思われる関数を持っています。私のjtableがselectionModeを次のように設定しているため、これらの行は必ずしも連続しているわけではありません。

行を削除する関数 (1 つずつ):

関数を起動すると、問題なくループが実行されます。ステップバイステップ モードでは、vData オブジェクトが更新されていることがわかります。これを 1 回だけ実行すると、GUI に問題はありません。複数の行を選択すると問題が発生します。たとえば、テーブルで行番号 0 と番号 1 を選択し、removeMessageRow 関数を起動すると、最初の実行時に vDataObject が正しく更新されます (すべてのデータがシフトされ、このベクトルの最後の要素がによって null に設定されます)。に呼び出しますvData.remove(m). したがって、私の場合、2回目の実行では、検索するオブジェクトは位置0にあるはずですが、更新されていないため、vDataオブジェクトとして位置1にあると予想しています。誰かがそれについて考えを持っていますか? 私は多くのことを試しました... ものですが、すぐに実行できる人はいません。前もって助けてくれてありがとう、私のシェイクスピアの言葉でごめんなさい。

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

java - JTable が getValueAt() を呼び出す頻度は?

JTableが AbstractTableModel からgetValueAt()を呼び出す頻度は?

getValueAt()で大きな計算(たとえば、多項式の値を計算する)を行う場合、それは正常でしょうか? 多項式の値を配列に格納して返す必要がありますか?

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

java - データベース データが JTable に入力されない

私はこのコードに数日間取り組んできました。データベースでの手順は正常に機能しますが、テーブルに入力されません。コードを何度も調べていますが、何が問題なのかわかりません... 表示されるエラーは次のとおりですnotes.length。これが私のコードの一部です: