Я работаю над приложением Eclipse RCP. Сегодня у меня возникли проблемы с отображением изображений в контекстном меню. Я хотел добавить в свою таблицу столбец, содержащий изображения звезд для представления пользовательского рейтинга. В Windows это вызывает некоторые проблемы, поскольку изображения звездочек сжимаются в левом углу ячейки таблицы, а не растягиваются на всю ячейку, но я как-нибудь решу это. Вдобавок у меня есть контекстное меню в таблице с записью под названием «рейтинг», где снова показаны разные звезды от 1 до 5 (представляющие уровень рейтинга), так что пользователь может щелкнуть по нему для выбора разных оценок. Это отлично работает в Windows. Теперь я переключился на Linux (Ubuntu), чтобы посмотреть, как это работает, и, как ни странно, звездочки в ячейке таблицы расположены идеально, а звездочки в контекстном меню даже не отображаются. Рейтинг внутри ячейки таблицы работает http://img187.imageshack.us/img187/4427/starsratingho4.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, изображения появились, хотя и не были правильно масштабированы, но, по крайней мере, они были показаны.




Возможно, это просто ошибка, и в этом случае на ваш вопрос не будет реального ответа.
Посмотрите, была ли у кого-то подобная проблема раньше в Затмение Bugzilla
В противном случае постарайтесь сделать как можно меньше тестового примера, который работает в Windows, но не в Linux (или наоборот), и отправьте новую ошибку.
Когда мне не показывались SWT-изображения, это произошло потому, что:
Не уверен, что это поможет вам в любом случае, но, возможно, это может дать вам подсказку, где искать.
Вы можете включить значки в меню в вашей конфигурации Gnome:
Теперь вы можете видеть значки в меню RCP.
Подробнее см. Эту ошибку Eclipse: Ошибка 293720 - [GTK2.18] Отсутствуют значки меню.