私はEclipse RCPアプリケーションに取り組んでいます。今日、コンテキスト メニューで画像を表示する際に問題が発生しました。私がやりたかったのは、ユーザーの評価を表す星の画像を含む列をテーブルに追加することです。Windows では、星の画像がセル全体に拡大されるのではなく、表のセルの左隅に押し付けられるため、これによりいくつかの問題が発生しますが、何とか解決します。さらに、テーブルにはコンテキスト メニューがあり、"rate" というエントリがあり、ここでも 1 から 5 (評価レベルを表す) までのさまざまな星が表示され、ユーザーはそれをクリックしてさまざまな評価を選択できます。これは Windows では問題なく動作します。ここで、Linux (Ubuntu) に切り替えて、そこでどのように機能するかを確認しました。奇妙なことに、テーブル セルの星は完全に配置されています。 表のセル内の評価は機能します http://img187.imageshack.us/img187/4427/starsratingho4.png
星の画像が表示されない http://img514.imageshack.us/img514/8673/contextmenuproblemgt1.png
コンテキスト メニューで、星の画像の画像記述子を設定するアクション クラスを使用しています。
public class RateAction extends Action {
private final int fRating;
private IStructuredSelection fSelection;
public RateAction(int rating, IStructuredSelection selection) {
super("", AS_CHECK_BOX);
fRating = rating;
fSelection = selection;
setImageDescriptor(createImageDescriptor());
}
/**
* Creates the correct ImageDescriptor depending on the given rating
* @return
*/
private ImageDescriptor createImageDescriptor() {
ImageDescriptor imgDescriptor = null;
switch (fRating) {
case 0:
return OwlUI.NEWS_STARON_0;
case 1:
return OwlUI.NEWS_STARON_1;
case 2:
return OwlUI.NEWS_STARON_2;
case 3:
return OwlUI.NEWS_STARON_3;
case 4:
return OwlUI.NEWS_STARON_4;
case 5:
return OwlUI.NEWS_STARON_5;
default:
break;
}
return imgDescriptor;
}
/*
* @see org.eclipse.jface.action.Action#getText()
*/
@Override
public String getText() {
//return no text, since the images of the stars will be displayed
return "";
}
...
}
なぜこの奇妙な振る舞いが現れるのか誰か知っていますか?
どうもありがとう。
(奇妙な理由で、画像は表示されません。ここに直接の URL があります: http://img187.imageshack.us/img187/4427/starsratingho4.png http://img514.imageshack.us/img514/8673/ contextmenuproblemgt1.png )
//編集: いくつか試してみましたが、コンテキスト メニューにチェックボックス スタイルを使用すると画像が表示されないようです (RateAction のコンストラクターを参照)。PushButton スタイルに切り替えたとき、画像は表示されましたが、正しくスケーリングされていませんでしたが、少なくとも表示されました。