問題タブ [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.
java - 非AWTスレッドのAbstractTableModelのデータを更新するためのベストプラクティス
AbstractTableModel
のモデルとして使用するためにサブクラス化しましたJTable
。データが追加されるたびfireTableRowsInserted()
に、AWTスレッドを呼び出します。基になるコンテナへのすべてのアクセスは、同期されたメソッドを使用してスレッドセーフになります。
このパターンは、これまでのところうまく機能しています。ただし、スレッドの問題があることに気付いたリストからデータを削除したいと思います。行を削除fireTableRowsDeleted()
してAWTスレッドを呼び出すとgetValueAt()
、現在は存在しない行インデックスの呼び出しを取得できます。
AWTスレッドの外部のテーブルモデルで操作を実行するためのベストプラクティスは何ですか?
java - TreeMapを使用したAbstractTableModelinsertRow()を実装する方法の裏付けとして
insertRow機能を実装しようとしているテーブルモデルがあります。最終的には、テーブルに上から行を追加できるようにしたいので、新しく追加された行を表示するたびに下にスクロールする必要はありません。これを実装する方法を理解するのに苦労しています。位置0に新しい行を追加するたびに、他のすべてを1つインクリメントする必要があるため、マップはあまり効果的ではないと思います。したがって、行を追加するたびに、すべてを1つ下げる必要があります。 。これは、テーブルが大きくなると非常にコストがかかるように思われます。下部に値を追加するときは、その行を更新するだけです。だから、私の質問は、AbstractTableModelにこれを実装するための最も効率的な方法は何ですか?
java - 既存の TableModel に列を追加する
クラスがあります。
ResultSetMetaData を使用して、データベースからの結果セットと一致するように TableModel を構築します。
クラス Bでは、JPanel を拡張し、クラス Aを追加してテーブルを表示しました。条件に基づいて新しい列をテーブル モデルに追加できるようにしたいと考えています。DefaultTableModel
私はグーグルで試してみましたが、示されているほとんどの例はnotに基づいていAbstractTableModel
ます。
これを達成する方法を知っている人はいますか?
java - ArrayIndexOutOfBoundsException: JTable 作成/テーブル変更で -1
あたかも私の問題を解決できるかのように見えるすべてのスレッドを読み、ここにあるすべての回答も読みましたが、私はまだ機知に富んでいます. 例外がスローされる理由はわかりませんが、これはthreading
. 含まれている場合は、 をどこに含めるべきか、またはを含めるnew Runnable()
かどうかを教えてください。invokeLater()
invokeAndWait()
例外につながるコードとスタックトレース (以下) を提供する間、しばらくお待ちください。
編集:が呼び出される直前syso
のセクションにいくつかの sが含まれていましたが、それらはコンソールに表示されません。したがって、アプリケーションがその時点に到達する前、つまり、から呼び出されたとき、またはデータとテーブル モデルがインスタンス化されるとき...AnnoTable
tableChanged
AAView
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 に追加していました。しかし、 (メソッドも備えている)しか知らないクラスからやりたかったので、以前はうまく機能していましたが、正しい方法でやりたかったのです。マーフィーの法則?JTable
JPanel
AnnoTable
JPanel
fireTableDataChanged
AAView
setAnnoTable()
java - Java AbstractTableModel repaint();
テーブルモデルに印刷するデータを更新するのに問題があります。
テーブルモデルであるクラスAgendaTableModelと、メインUIであるクラスScreenがあり、[Listar Contatos]ボタンを押すと、テーブルモデルがJFrameの中央のJScrollPaneに表示されますが、空白のままです。
何が問題なのか?
java - JTableが表示されない
私のアプリケーションでは、すべてが配布されます。
- アクションで、アプリケーションはDBからデータを取得し、に保存し
ArrayList<T>
ます。 RelativeTableModel
を渡す場所のオブジェクトを作成しますArrayList<T>
。- inを持つ
BrowseListPanel
クラスがあります。そのインスタンスは、メインアプリケーションですでに作成されています。JTable
JScrollPane
- モデルを渡して
BrowseListPanel
、最後にパネルを表示します。
- inを持つ
コード:
しかし、私は見ていませんTable
。BrowseListPanel
(を含む)のオブジェクトJTable
はすでに作成されており、後でTableModel
追加されると思います。したがって、ある種のイベントがで発生する必要がありますsetTModel()
。
私は正しいですか?その場合、どのイベントをスローする必要があり、その実装は何である必要があります。
java - Swing : 複数のオブジェクトに対して単一の AbstractTableModel ??
DB からのデータを に格納するために使用されるさまざまなオブジェクトがありますArrayList<T>
。それぞれのレコードをテーブルに表示する必要がありました。私AbstractTableModel
は作業中の最初のオブジェクトに使用します。AbstractTableModel
クラスにはArrayList<Relation>
およびのString[]
ヘッダーがあります。
AbstractTableModel
私の質問は次のとおりです。すべてのオブジェクトに使用できる同じものを作成するにはどうすればよいですか。つまり、Relation を使用する場合は を使用できArrayList<Relation>
、Product を使用する場合はArrayList<Product>
.. を使用できます。私によると、それぞれに異なるものを書くことAbstrastTableModel
は良い考えではありません。主な問題はsetValueAt
、、、....getValue
addRow
すべての人に役立つ単一のモデルとして、これに取り組むことをお勧めします。また、ここからテーブルのイベントを発生させることもできます。
私はそれが少し複雑であることを知っています。しかし、構造は広大でAbstractTableModel
ありJTable
、各オブジェクトの新しいクラスを作成することもお勧めできません。
何を指示してるんですか ?
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にあると予想しています。誰かがそれについて考えを持っていますか? 私は多くのことを試しました... ものですが、すぐに実行できる人はいません。前もって助けてくれてありがとう、私のシェイクスピアの言葉でごめんなさい。
java - JTable が getValueAt() を呼び出す頻度は?
JTableが AbstractTableModel からgetValueAt()を呼び出す頻度は?
getValueAt()で大きな計算(たとえば、多項式の値を計算する)を行う場合、それは正常でしょうか? 多項式の値を配列に格納して返す必要がありますか?
java - データベース データが JTable に入力されない
私はこのコードに数日間取り組んできました。データベースでの手順は正常に機能しますが、テーブルに入力されません。コードを何度も調べていますが、何が問題なのかわかりません... 表示されるエラーは次のとおりですnotes.length
。これが私のコードの一部です: