Таблица SWT с переменной высотой строки: работает в Linux, но не в Mac / Windows - PullRequest
6 голосов
/ 03 ноября 2010

Проблема: мне нужна таблица SWT (JFace TableViewer) с переменной высотой строки. Фактически, я решил это на своей машине для разработки (под управлением Ubuntu 10.10). К сожалению, это не работает ни на Windows, ни на Mac.

Сначала я думал, что неправильно использовал библиотеки. Но сейчас я боюсь, что то, что я хочу сделать, просто невозможно в Windows. Я надеюсь, что кто-то здесь убеждает меня в обратном.

Чтобы воспроизвести: вместо того, чтобы предоставлять свой код здесь, я создал минимальную программу для воспроизведения проблемы. Я начал со следующего фрагмента:

http://git.eclipse.org/c/platform/eclipse.platform.ui.git/tree/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/viewers/Snippet049StyledCellLabelProvider.java

Я изменил метод update () для получения двух строк текста для каталогов и одной строки для файлов (для имитации среды с переменной высотой строки):

...
if (file.isDirectory()) {
    cell.setText(styledString.toString() + "\n"
        + styledString.toString());
    cell.setImage(IMAGE1);
} else {
    cell.setImage(IMAGE2);
}
...

Это работает так, как задумано в Linux, но в Windows все строки имеют одинаковую высоту. В частности, видна только одна строка.

Затем я пытался помочь SWT, сделав измерение () более разумным. Поэтому я переписал measure () следующим образом:

protected void measure(Event event, Object element) {
    if (((File) element).isDirectory()) {
        event.height = 32;
    } else {
        event.height = 16;
    }
    super.measure(event, element);
}

Результат: все строки имеют высоту 32. Опять же, это работает так, как задумано в Linux.

Боюсь, что в Windows все строки должны быть одинаковой высоты. Это было бы для меня показом. Кто-нибудь может подтвердить это, или даже лучше, предоставить обходной путь?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 03 декабря 2010

Я тоже столкнулся с этой проблемой - мне нужен виджет таблицы SWT, который мог бы поддерживать ячейки различной высоты. Как говорит the.duckman, строки таблицы Win32 не могут этого сделать. Мы закончили с использованием виджета KTable. Он не использует собственные таблицы ОС.

http://sourceforge.net/projects/ktable/

Это сработало хорошо для нас, но у него есть некоторые причуды. К счастью, исходный код довольно легко изменить в соответствии с вашими потребностями.

2 голосов
/ 03 ноября 2010

Я могу подтвердить, что в Win32 строки таблицы могут иметь одинаковую высоту.См. Например этот отчет об ошибке .Обход из ошибки 148039 делает доступным setItemHeight(), но это не меняет это ограничение.

1 голос
/ 06 декабря 2010

Мы используем виджет Nebula Grid.http://www.eclipse.org/nebula/widgets/grid/grid.php

Это исключительно гибкий.В нашем случае мы используем его для получения большей функциональности таблицы стилей html в сочетании с виджетом treeViewer.

Снимок экрана alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...