問題タブ [glazedlists]
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でGlazedLists/JTableの行を追加、削除、更新するにはどうすればよいですか?
検索目的でテーブルをフィルタリングできるように、GlazedListsを使用してテーブルを作成しました。ここで問題となるのは、このテーブルの行を削除、追加、または更新する方法です。APIを検索しましたが、理解できませんでした。
簡単な例を使用して、削除、追加、更新を実現する方法を誰かが示すことができますか?
編集:
java - javaのGlazedLists/JTableで列、行、またはセルを編集可能にする方法は?
GlazdJTable のセルを編集可能にする方法を示すコード行をドロップできますか?
//テーブル セルを編集可能に設定するには?
注: TableFormat は WritableTableFormat インターフェイスを実装する必要があることを知っています。しかし、カスタム テーブル フォーマットを作成する必要があるかどうかはわかりません。または、JTable セルを JTable のように編集可能に設定することは可能です。
java - JTableでglazedlistのUndoRedoSupportまたはundoSupportを使用するにはどうすればよいですか?
GlazedListeventListを使用してJTableを作成しました。APIを検索しましたが、このテーブルに元に戻す/やり直しの可能性を追加する方法がわかりませんでした。私はAPIで次のクラスを見つけました:
UndoRedoSupport undoRedoSupport = new UndoRedoSupport<"what here?">("argument?");
UndoSupport undoSupport = new UndoSupport<"what to write here?">("argument?");
誰かがそれを使う方法を知っていますか?
java - GlazedListでJTextFieldをフィルタとして文字列に置き換える方法は?
テーブルのフィルターとして使用したいラジオボタンのセットがあります。このラジオ ボタンは、モデル クラスに変数を設定します。モデルにゲッターを使用してこの値を取得し、この値を GlazedList テーブルのフィルターとして使用したいと考えています。
それを行う方法を知っている体はありますか?
以下は、フィルターとして JTextField を使用した私のテーブルです。
java - 同じGlazedListテーブルに異なるレベルの2つのフィルターを追加するにはどうすればよいですか?
2つの異なるレベルでフィルタリングしたいテーブルを作成しました。まず、ファイル拡張子like(.jpg、.doc、その他)のラジオボタンでフィルタリングします。2番目にtextFieldでフィルタリングして、最初にフィルタリングされたものの内部を検索します。以下のように、デモで見ることができますが、ラジオボタンでテーブルをフィルタリングできますが、テーブルに2番目のレベルのフィルター(JTextField)を適用する方法がわかりません。
誰かがそれを行う方法を知っていますか?
MatcherEditorクラス:
java - 2番目の列に従ってglazedListテーブルのアセンダントをプログラムで並べ替える方法は?
3列のGlazedListテーブルがあります。列のヘッダーをクリックすることで、子孫と子孫を手動で並べ替えることができます。
私の質問は、アプリケーションの起動時にテーブルを最初から並べ替える方法です。 つまり、テーブルは2番目の列に従って自動的にアセンダントソートされます。
編集済み:以下のように
追加.appendComparator(1,0,true)
するだけTableComparatorChooser
です。
TableComparatorChooser.install(codeTable, codeSortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE).appendComparator(1,0,true);
java - TableComparatorChooserをカスタマイズして、マウスのシングルクリックに応答するにはどうすればよいですか?
GlazedListテーブルがあります。列を並べ替える場合は、ダブルクリックする必要があります。シングルクリックに変更したい。
誰かがそれを行う方法を知っていますか?
java - GlazedLists の EventTableModel に切り替えると、JXTable のソートが非常に遅くなるのはなぜですか?
更新しました
この質問を更新して、問題の原因をより正確に説明し、最初に使用したより簡単な例を含めました。
私が抱えているパフォーマンスの問題を示すために、以下に簡単な例を含めました。JXTable を通常の ArrayList でバックアップすると、かなりうまく機能します。ただし、EventList の ArrayList を切り替えて、EventTableModel を使用してテーブルを構築すると、並べ替えが大幅に遅くなります (この場合、約 10 倍遅くなります)。
Maven または Gradle を使用している場合、使用しているアーティファクト座標は次のとおりです。
そして、これがその例です。EventList を使用しようとした唯一の理由は、TableModel の外部で変更して必要な通知を発生させることができるデータ構造が必要だったからです。
また、EventTableModel に基づくテーブルが、数値ではなく文字列値に基づいて並べ替えられていることにも気付きましたが、その理由はわかりません。これは、100 万行が並べ替えられたプロファイラーのスクリーンショットです。
何か案は?
java - removeAll(およびe.getValueIsAdjusting == false)を使用してリストから複数のアイテムを削除すると、ListSelectionListenerに複数のイベントが表示されるのはなぜですか?
私はGlazedListsを使用EventList
しEventTableModel
ています。以下の例では。それが違いを生むかどうかはわかりません。選択の変更を監視しているテーブルがあります。複数のアイテムを削除するListSelectionListener
と、複数のイベントが表示され、ハンドラー内では、モデルが既に変更されていても、テーブルによって報告された選択されたインデックスが、削除が発生する前のモデルの状態と一致します。
以下の例を実行すると、7つのアイテムがリストに追加されます。最後の2つの項目を選択すると、次の出力がコンソールに表示されます。
それは私が期待していることですが、これら2つのアイテムを削除すると、次の出力が得られます。
removeAll
リストを使用して連続ブロック内のアイテムを削除しているので、これは1つのイベントだと思いますが、 ListSelectionListener
2つの別々のイベントであるかのように通知されているようです。4つのアイテムを削除すると、リスナーには4つのイベントが表示されます。
テーブルとモデルが同期していませんが、理由はわかりません。リストの最後からアイテムが削除された場合、テーブルによって報告される選択されたインデックスは、基になるリストのサイズよりも大きくなる可能性があります。基本的に、から返されるインデックスは、基になるモデルでJTable.getSelectedRows
の呼び出しによって引き起こされた最後の選択イベントまで信頼できません。removeAll
JTable
リストの選択が安定し、正しい選択されたインデックスが報告されるようになった後、選択の変更に関する通知を受け取るにはどうすればよいですか?