Изображение Ваадина в сетке не отображается

Я пытаюсь отобразить крошечное изображение (16x16 пикселей) в столбце TreeGrid.

 treeGrid.addComponentColumn(i -> new Image("file://c:/temp/reddot.png", "alt")).setHeader("Preview");

В моей среде IDE этот URL-адрес файла подчеркнут, я могу щелкнуть по нему, он открывает изображение в моем браузере. Итак, файл выглядит нормально и существует. Но почему-то он не отображается в столбце сетки, и текст «alt» тоже не отображается. Хм. Кто-нибудь знает, что происходит не так? К сожалению, я не вижу сообщений об ошибках ...

спасибо Торстен

PS: Я использую версию 13.


person user1119859    schedule 28.03.2019    source источник
comment
Можете ли вы попробовать поместить все ресурсы, необходимые вашему приложению, в соответствующую frontend папку? Вот блог, в котором объясняется, где должна быть расположена ваша папка внешнего интерфейса. .   -  person kscherrer    schedule 28.03.2019
comment
Пробовал - но поскольку я использую весеннюю загрузку и все еще в режиме разработки, у меня нет реального файла jar / war. Так что это не сработало. Но все равно спасибо за эту ссылку. Очень интересно.   -  person user1119859    schedule 29.03.2019
comment
Пружинный ботинок IIRC также использует банку / войну в конце. После запуска приложения проверьте, есть ли папка target в корне вашего проекта. Он должен содержать банку / войну.   -  person kscherrer    schedule 29.03.2019
comment
Создайте папку src/main/webapp/frontend/img и поместите туда свое изображение. При создании объекта Vaadin Image используйте этот путь: new Image("frontend/img/reddot.png", "alt")   -  person kscherrer    schedule 29.03.2019
comment
Предложение по улучшению несвязанного кода: если вы всегда показываете одно и то же изображение для всех строк, вы можете заранее создать изображение и использовать тот же экземпляр изображения в addComponentColumn. Если изображение зависит от определенных атрибутов соответствующего элемента, игнорируйте этот комментарий.   -  person kscherrer    schedule 29.03.2019
comment
Вероятно, вам потребуется использовать средство визуализации компонентов для этого столбца.   -  person Morfic    schedule 29.03.2019
comment
Что вы видите, когда осматриваете ячейку сетки? Присутствует ли тег <img>?   -  person Steffen Harbich    schedule 01.04.2019


Ответы (1)


Вы можете попробовать поместить изображение под META-INF/resources. Затем вы можете ссылаться на изображение напрямую по имени, например так: Image im=new Image("kissa.jpg","Random picture");

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

И вот результат:  введите описание изображения здесь

Весь код:

    TreeGrid<Person> grid = new TreeGrid<>(Person.class);
    grid.setHierarchyColumn("name");
    grid.addComponentColumn(e->{
    if(e.getName().equals("daughter")) {
            Image im=new  Image("test/cat.jpg","Random picture");
            im.setWidth("200px");
            im.setHeight("150px");
            return im;}
    else { 
           Image im=new Image("kissa.jpg","Random picture"); 
           im.setWidth("200px");
           im.setHeight("150px");
           return im;}}).setHeader("Cat");
    Person dad = new Person("dad", null);
    Person son = new Person("son", dad);
    Person daughter = new Person("daughter", dad);
    List<Person> all = Arrays.asList(dad, son, daughter);

    all.forEach(p -> grid.getTreeData().addItem(p.getParent(), p));

    add(grid);

Пример TreeGrid скопирован отсюда: Использование новые функции в версии LTS: case TreeGrid

person anasmi    schedule 05.04.2019