Eclipse RCP и JFace: проблемы с изображениями в контекстном меню и TreeViewer

Я работаю над приложением Eclipse RCP. Сегодня у меня возникли проблемы с отображением изображений в контекстном меню. Я хотел добавить в свою таблицу столбец, содержащий изображения звезд для представления пользовательского рейтинга. В Windows это вызывает некоторые проблемы, поскольку изображения звездочек сжимаются в левом углу ячейки таблицы, а не растягиваются на всю ячейку, но я как-нибудь решу это. Вдобавок у меня есть контекстное меню в таблице с записью под названием «рейтинг», где снова показаны разные звезды от 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.pnghttp://img514.imageshack.us/img514/8673/contextmenuproblemgt1.png)

//Редактировать: Я сделал несколько попыток, и кажется, что изображения просто не отображаются при использовании стиля Checkbox для контекстного меню (см. Конструктор RateAction). Когда я переключился на стиль PushButton, изображения появились, хотя и не были правильно масштабированы, но, по крайней мере, они были показаны.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
2 451
3

Ответы 3

Возможно, это просто ошибка, и в этом случае на ваш вопрос не будет реального ответа.

Посмотрите, была ли у кого-то подобная проблема раньше в Затмение Bugzilla

В противном случае постарайтесь сделать как можно меньше тестового примера, который работает в Windows, но не в Linux (или наоборот), и отправьте новую ошибку.

Когда мне не показывались SWT-изображения, это произошло потому, что:

  • Я использовал заглавные буквы в имени файла изображения, но не в исходном коде. Работает в Windows, а не в Linux.
  • Я пытался запустить версию SWT для x64 до того, как она была поддержана.
  • Я использовал VNC. Не знаете, почему это не работает, проблемы с глубиной цвета?
  • Я использовал Ubuntu. Изображения отлично отображаются в Red Hat.

Не уверен, что это поможет вам в любом случае, но, возможно, это может дать вам подсказку, где искать.

Вы можете включить значки в меню в вашей конфигурации Gnome:

  • Открыть терминал
  • Запускаем свойства внешнего вида гнома
  • Выберите вкладку Интерфейс
  • Включить флажок Показывать значки в меню

Теперь вы можете видеть значки в меню RCP.

Подробнее см. Эту ошибку Eclipse: Ошибка 293720 - [GTK2.18] Отсутствуют значки меню.

Другие вопросы по теме