問題タブ [swt]
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 - Eclipse で SWT と JFace の JavaDoc を取得するには?
私は Eclipse の初心者で、編集中に SWT と JFace の JavaDocs を表示する方法がわかりません。
どうすればいいですか?ありがとう!
java - HTML コンテンツに追加するときに、SWT ブラウザ ウィジェットの下部を表示し続けるにはどうすればよいですか?
SWT ブラウザ ウィジェットで HTML を表示しています。コンテンツの最後にロギング メッセージを追加していて、常に下部が表示されるようにしたいと考えています。現在、コンテンツにテキストを追加するたびに、最初に新しいテキストを設定します。
次に、JavaScript を使用してブラウザ ウィジェットを下にスクロールします。
これに関する問題は、テキストを設定すると、ウィジェットがスクロールダウンする前に再び上部に切り替わるため、多くのメッセージをすばやく追加すると、ほとんどの場合、ブラウザーウィジェットが上部を表示し、切り替え時にちらつきます。ボトム。これにより、下部に記録されている内容を追跡できなくなります。
ツリー ビューアーを使用して Eclipse プラットフォームのすべての利便性を得ることができることは承知していますが、アプリの Swing バージョンもあり、どちらも同じ HTML と CSS プレゼンテーションを使用する必要があります。
理想的には、Swing コンポーネントを埋め込むことは避けたいのですが、これを可能にするものがあれば、喜んでお知らせします。JScrollPane 内の JEditorPane で試してみました。エディター キットの read メソッドを使用してコンテンツに追加します。
そして、このように下にスクロールします:
これは、スタンドアロンの Swing アプリでは非常にスムーズに機能しますが、Eclipse に組み込まれているとちらつき、HTML コンテンツの高速な更新についていけません。
今のところ、これを Eclipse 内でスムーズに動作させる唯一の方法は、Browser ウィジェットのコンテンツに追加するのではなく先頭に追加することですが、新しいメッセージを上部ではなく下部に追加することを強くお勧めします。
java - SWT Composite が、正しくレイアウトするために resize() の呼び出しを必要とすることがあるのはなぜですか?
時々、正しくレイアウトすることを完全に拒否する SWT コンポジットに遭遇することがあります。コンポジットで dispose を呼び出し、それを別のものに置き換えたときに、これに遭遇することがよくあります。ただし、この場合に厳密に限定されるわけではないようです。
この問題が発生した場合、約 50% の確率で、問題のあるコンポジットに対して and を呼び出すことができpack()
、layout()
すべてがうまくいきます。ただし、約 50% の場合、これを行う必要があります。
これは、レイアウト マネージャーなどのほぼすべての組み合わせで発生しました。
シンプルで再現性のある素敵なケースがあればいいのにと思いますが、そうではありません。誰かがこの問題を認識して、「まあ、xyz がありません....」と言ってくれることを願っています。
java - JFace FontRegistry の NoClassDefFoundError
(Eclipse 起動プロファイルを介して) SWT アプリケーションを起動すると、次のスタック トレースが表示されます。
さて、これを奇妙にするもの:
- プロジェクトのビルド パスを変更し、jface.jar をソース プロジェクト (同じバージョン - 3.3.1) に置き換えると、エラーはなくなります。
- 同じ jar を使用する他のアプリケーション、および同じ起動プロファイルとプロジェクトのコピーはすべて正常に動作します。
- これは ではありません
ClassNotFoundException
。クラスはクラスパスにあります。ソースを jar に添付すると、getFontRegistry メソッドにデバッグできます。このメソッドは、最終的NoClassDefFoundError
に行 338 で をスローする前に、数回正常に実行されます。行 337 は、静的変数が初期化されているかどうかを確認する「if variable == null」ステートメントです。まだ初期化されていない場合、338行目で初期化しています。最初は null チェックに失敗し、初期化が実行されます。その後のメソッドのパスでは、null チェックがパスするため、既に初期化されている静的な値が返されます。最終パス (失敗したパス) で、(静的変数が既に初期化されていても) null チェックが再び失敗し、静的変数を再初期化しようとすると、NoClassDefFoundError
投げられます。関連するソースは次のとおりです (336 行目以降、fontRegistry はプライベートな静的変数であり、他の場所では設定されていないことに注意してください)。
.
.
- jar の新しいコピーを既に取得しており (破損していないことを確認するため)、.classpath ファイルと .project ファイルを削除し、新しいプロジェクトを開始して、起動プロファイルを再作成しました。変化なし。
上記の #3 の特殊性のため、ある種の奇妙なクラスローダの動作を疑っています。メソッドを通過する最後のパスが別のクラスローダにあるかのように見えますか?
アイデア?
更新: Pourquoi Litytestdata によって提供された回答により、ProgressMonitorDialog の 458 行目のすぐ上の try ブロックで何が起こるかに注意を払うようになりました。実際、そのコードは例外をスローしていましたが、それは finally ブロックによって飲み込まれていました。根本的な原因は、別のクラスの欠落でした (欠落しているクラスは、JFontRegistry またはそれに直接関連するクラスではなく、エッジ ケースで依存するクモの巣でした)。 、それが突破口だったので、Pourquoi'sを受け入れました。ありがとうございます。
java - SWT テーブルの最初の数列を「固定」して、水平方向にスクロールしないようにする
SWT ツリー テーブルを使用して、テーブル ベースのエディターを実装しました。ユーザーが水平方向にスクロールしたときに最初の数列がその位置にとどまるようにする方法が見つからないことを除いて (編集中の行を識別できるようにするため)、ほとんど私たちが望んでいることを実行します。
さまざまな程度の不完全または放棄された多くのサードパーティ製テーブル コントロールと、2 つのテーブルの使用方法を示すスニペットがあります (これらは垂直方向にスクロールすると同期しなくなります)。
これを解決する最善の方法は何ですか?
java - Java SWT からのウィンドウ ID
SWT プログラムのウィンドウ ID を知りたいです。
標準的な方法で SWT シェルを起動します。作成されたウィンドウの ID を見つけるにはどうすればよいですか? プログラムは、Compiz-Fusion ウィンドウ マネージャーを使用して Fedora 10 で実行されています (違いがある場合)。
私が何を意味するかを説明するのに役立つコード:
更新 2009 年 3 月 6 日 さまざまなことを調べて試した結果 (以下の提案については VonC に感謝します)、これまでのところ機能しているものに出会いました。それは非常に危険ですが、少なくとも当面は他の仕事に取り掛かることができます.
Control.embeddedHandle から返される ID は、ウィンドウ ID に近いです。予測可能なオフセットだけ異なります。だから私のコードは次のとおりです。
WINDOW_ID_MAGIC_NUMBER は 5+(埋め込みコンポジットの前にシェルに追加されたウィジェットの数) です。
これまでのところ、私のシステムでは信頼できるようです。別の環境で倒れるかどうかはまだわかりません。
java - Java SWT: メニュー項目が選択されていることを示す方法
SWT を使用して、(タスクバー メニューからの) メニュー項目が現在アクティブな選択であることを示す一般的な方法は何ですか? チェックマーク?大胆な?これはコードでどのように行われますか?
eclipse - モードレスな方法で Eclipse プラグイン内から JFace FileDialog を使用する方法は?
私は Eclipse プラグインを作成しています。何らかのアクションに応答して、(別のジョブ内で) 一連の操作を開始することに興味があります。これらの操作の 1 つは、ユーザーにファイル名を提供するように要求することです。これは、JFace JDialog で実行しようとしています。
ただし、モードレスな方法でこれを行う方法は明確ではありません。たとえば、ディスプレイとシェルはどこで入手できますか? 開発者がダイアログで内容を編集できる間、UI が引き続き動作するようにするにはどうすればよいですか?
java - Swing App 内で SWT コンポーネントを実行する
Swing コンポーネント内でホストされている複雑な SWT UI を実行しようとした経験がある人がいるかどうか疑問に思っていました。
私は非常に簡単なデモを行うことができましたが、他の誰かがこれを試みて失敗/成功した場合、彼らの経験から学ぶことは素晴らしいことです.
繰り返しますが、私のアプリケーションは Swing アプリであり、複雑な SWT UI コンポーネント (ドラッグ アンド ドロップ、ポップアップ ウィンドウとダイアログ) を利用したいのですが、これを管理した人はいますか?
java - Java swt テーブルの動的コンボ ボックス リスト
org.eclipse.swt.widgets.Table にコンボ ボックス コントロールを作成します。コード スニペットは以下のとおりです。
イベントをトリガーして、テーブル内の選択された行のコンボボックスリストを動的に変更するにはどうすればよいですか (たとえば、item1、item2 などが行 5 の item4、item5、item7 などに変更された場合のみ)。私の場合のイベントは、リストが変更されない別のコンボボックスでの選択です