問題タブ [jface]
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 - JFaceTreeViewerのちらつき
メソッドを使用して、JFaceTreeViwerの入力を定期的に更新しようとしていますsetInput()
。また、私は使用します
ツリーの状態を保存するメソッド。ただし、setInput()
呼び出すたびにTreeViewerがちらつきます。ちらつきを防ぐにはどうすればよいですか?
java - SWT/JFace RCP アプリケーションで巨大なテーブルにデータを入力する
SWT テーブルに大量の行を表示するにはどうすればよいでしょうか? 巨大とは、20K 行、20 列を超えるものです。なぜそんなに多くのデータを表示する必要があるのか と聞かないでください。それは重要ではありません。ポイントは、エンドユーザーが待って退屈しないように、できるだけ速く動作させる方法です。各行にはオブジェクトのインスタンスが表示され、列はそのプロパティ (一部) です。JFace コンテンツ/ラベル プロバイダー パターンを使用することを考えましたが、テーブルにデータを直接ヒットするよりもさらに遅くなるのではないかと心配しています。これはそれがどのようになるかです:
私のコンピューターで 20,000 レコードを描画するには、約 20 秒かかります。私が Windows で見た最大のパフォーマンスの問題は、新しいテーブル項目が作成され、テキストが取り込まれたときに、SWT によって送信される信じられないほどの量のネイティブ ウィンドウ メッセージによって引き起こされます。これに対する優れた回避策を見つけました-データを入力する前にテーブルを非表示にし、完了したら表示します。ループの前に table.setVisible(false) を呼び出し、ループの後に table.setVisible(true) を呼び出すだけで、速度が 6 ~ 7 倍になります。
もっとスピードアップしたい。あなたは何を提案しますか?また、ウィジェットを非表示にするこのトリックが、SWT (別名 Linux) の Windows 以外の実装でどのように機能するのだろうか?
eclipse - TableViewer、最初の並べ替え順序を定義してもデータには影響しません
実際には、通常どおりテーブルビューアーを作成しますが、最初は、並べ替え用に定義された列に従ってすべての行を並べ替えるわけではありません。
私が使用しているコード:
列 #4 を手動でクリックした後にのみ、正しい順序を取得します。それ以外の場合は、ViewContentProvider にリンクされたオブジェクト リストの「挿入順序」に正確に従います。助けてくれますか?TNX
eclipse - 遅延および遅延 TreeViewer に関する質問
実際には2つの質問がありますが、それらは一種の関連性があるため、ここでは1つにします...
TreeViewer
( SWT.VIRTUAL
) とを使用して現在表示されていないツリー ノードのガベージ コレクションを確実に行う方法はILazeTreeContentProvider
? ノードに 5000 の子がある場合、それらがビューアーによって表示されると決して手放されないため、ツリーに多数のノードとリーフがあり、十分なヒープ サイズがない場合、メモリ不足エラーが発生します。大量のデータ (数十万または数百万のオブジェクト) を持つツリービューアーを保持している閉じられていないビューによって引き起こされるメモリ リークを回避するためのベスト プラクティスはありますか? おそらく、ビューアー/コンテンツ プロバイダー要素をより柔軟に使用できるコールバック インターフェイスがいくつかあるのではないでしょうか?
単一の( ) に対して、deffered ( DeferredTreeContentManager
) と lazy ( ILazyTreeContentProvider
) の読み込みを組み合わせることは可能ですか? 例と API を見て理解した限りでは、特定の時点でどちらか一方しか使用できず、両方を組み合わせて使用することはできません。たとえば、特定のノードの可視の子のみをフェッチし、Job を使用して別のスレッドでそれらをフェッチします。 API。私を悩ませているのは、遅延アプローチがすべての子をロードすることです。別のスレッドではありますが、一度に最小限のサブセットのみが表示される場合でも、すべての要素をロードします。TreeViewer
SWT.VIRTUAL
必要に応じて、質問にコード例を提供できます...
私は現在それらに苦労しているので、その間に何かを思い付くことができれば、ここで喜んで共有します.
ありがとう!
よろしく、 スヴィレン
eclipse - ILazyTreeContentProvider で並べ替えとフィルタリングを使用するより良い方法はありますか
どうやら、ILazyTree(TreePath)ContentProvider
並べ替えとフィルタリングの使用が でサポートされていない場合TreeViewers
。ViewerFilters
そのため、 TreeView にorを設定Sorters/Comparators
しても何の役にも立ちません。おそらくこれは、現時点で見えていない要素も含めて、すべての要素を把握していないことに関係しています。
このステートメントをサポートするために、org.eclipse.jface.viewers.TreeViewer
クラスからの javadoc の抜粋を次に示します。
コンテンツ プロバイダが
ILazyTreeContentProvider
または のILazyTreePathContentProvider
場合、基になるツリーは {@link SWT#VIRTUAL} スタイル ビットを使用して作成する必要があり、ツリー ビューアは並べ替えやフィルタリングをサポートしません。{@link #setUseHashlookup を呼び出してハッシュ ルックアップを有効にする必要があります。 (ブール値)}.
現時点で唯一の解決策は、すでに注文されている各ノードの子を取得することです。動的な並べ替えが必要な場合、つまり、実行時に降順または昇順で並べ替え順序を切り替えることができるようにする必要がある場合は、独自の解決策を考え出す必要があります。たとえば、子の入力および更新時に並べ替えのブール フラグを監視します。
おそらくより良い解決策、おそらくより多くのjface APIを含むことに気づいていますか?
java - Eclipse 3.4 用の jface データバインディング フレームワークの良い例とドキュメントはありますか?
公式サイトは非常に少なく、ほとんどの例は EMF 関連で Eclipse 3.5 用です。私は Tree Viewer の例に特に興味がありますが、良い例とドキュメントは常に高く評価されています。
eclipse-rcp - Eclipsev3.3のJFaceTableViewerにリッチテキストを挿入する
3.5以降で利用可能ですが、StyledCellLabelProvider
残念ながら、v3.3を使用する必要があるプラットフォームに固定されています。JFaceのフィールドにリッチテキストを表示する方法を誰かが言うことができますTableViewer
か?
それも可能ですか?
java - JFace TableViewer - 他のセルに応じてセルをフォーマットする
私は JFace TableViewer を持っています。通常、1 つの列の値は一意である必要がありますが、そうでないことが理にかなっている場合もあります (行がコピーされ、まだ変更されていない場合など)。ただし、その列に重複する値を含む行を強調表示して、重複する値をユーザーに警告したいと思います。これを行う最善の方法は何ですか?LabelProvider は、現在のセルまたはせいぜい現在の行にしかアクセスできないようです。
ありがとう、トーマス
java - プラグインを作成しないと、Eclipse で JFace と SWT を使用できません
免責事項:
これは、.NET GUI が Java を回避しようとする典型的なケースです。
問題の説明:
JFace と SWT を使用して非常に単純な GUI を構築しようとしています。コードは単純です (チュートリアルがたくさんあります)。それほど単純ではないのは、JFace と SWT をプラグイン プロジェクトの外で動作させることができないように見えることです。
CLASSPATH に "C:/eclipse 3.5/plugins" を入れているので、プロジェクトで JFace と SWT を問題なく使用できると期待しています (私のコンピューターから --> プロパティ --> 高度な --> 環境変数)。そして、この記事の「SWT と JFace のインストール」ボックスに示されているように、PATH にあるすべての swt-*.dll (確かに、ローカル ユーザー パスとグローバル パスの両方) を見つけることができます。
問題は、ビルドパスからjarを直接参照しない限り、eclipse.orgから何もインポートできないことです->ライブラリ->外部jarを追加します(ビルドするには、次のjarを追加する必要があります:org.eclipse.swt .win32.win32.x86_3.5.1.v3555a.jar、org.eclipse.jface_3.5.1.M20090826-0800.jar )。これを行うと問題なくビルドできますが、「Java アプリケーション」として実行すると、次のエラーが発生します (別の方法で実行する必要がありますか?)。
ApplicationWindow
これをデバッグしようとしましたが、基本的に、クラス (org.eclipse.jface.window.ApplicationWindow)をインスタンス化しようとするとすぐにスローされます。エラーを再現しようとして、すべてのコードをコメントアウトし、メインで次のように置き換えたところ、最初の行で上記と同じエラーがスローされました。
質問:
質問 1 : 上記のエラーを修正して (何が起こっているのか理解したいのですが) どうすれば実行できるようになりますか?
質問 2 : プロジェクトで jar が表示されないのはなぜですか?また、その作成方法は?
Java と Eclipse に慣れていないため、非常に些細なことを見落としている可能性があります。どんな助けでも大歓迎です!
編集:他の誰かが同じ問題を抱えているようです-> http://www.eclipsezone.com/eclipse/forums/t60528.html -彼らがどのように解決したかははっきりしていませんが、支援をお願いします
eclipse - Eclipse:テーブルの列の画像が透明かどうか?
Eclipseテーブルセルで自分の画像を描画し始めると、そのテーブルセルを強調表示すると、奇妙な強調表示色になります。自分で見て:
最初の列のように透明度は実際には保持されますが、ハイライトブルーは本来の青ではありません。これは私のせいですか、それともEclipseのせいですか?
コードスニペットは次のとおりです。