Добавьте две аннотации: @JsModule
& @Theme
Я нашел немного больше документации по этому уроку, Темы и стили в Vaadin , от Jouni Koivuviita на сайте Vaadin.com. См. Использование глобальных вариантов> Компакт .
Добавить три импорта:
import com.vaadin.flow.component.dependency.JsModule;
import com.vaadin.flow.theme.Theme;
import com.vaadin.flow.theme.lumo.Lumo;
Добавить две аннотации:
@JsModule ("@vaadin/vaadin-lumo-styles/presets/compact.js")
@Theme ( Lumo.class)
Цитировать учебник:
Технически это добавляет элемент <style>
на странице, который устанавливает новые значения для свойств Lumo sizing and spacing CSS properties . Вы можете просмотреть значения из исходного кода .
Для получения более подробной технической информации, включая список затронутых CSS свойств, см. Первую ссылку в руководстве: Компактная предустановка на демонстрационном сайте стилей Lumo . И посмотрите фактический код во второй ссылке на странице GitHub: vaadin-lumo-styles / presets / compact. html.
Поместите это в демонстрационный класс. Мы модифицируем класс MainView
, сгенерированный в новом проекте стартовой страницей проекта Vaadin.com , для Vaadin 14.1.17.
package work.basil.example;
import com.vaadin.flow.component.Key;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.dependency.JsModule;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.select.Select;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.PWA;
import com.vaadin.flow.theme.Theme;
import com.vaadin.flow.theme.lumo.Lumo;
/**
* The main view contains a button and a click listener.
*/
@JsModule ( "@vaadin/vaadin-lumo-styles/presets/compact.js" )
@Theme ( Lumo.class )
@Route ( "" )
@PWA ( name = "Project Base for Vaadin", shortName = "Project Base" )
@CssImport ( "./styles/shared-styles.css" )
@CssImport ( value = "./styles/vaadin-text-field-styles.css", themeFor = "vaadin-text-field" )
public class MainView extends VerticalLayout
{
enum Animal { DOG, CAT, BIRD, HAMSTER } ;
public MainView ( )
{
// Use TextField for standard text input
TextField textField = new TextField( "Your name" );
// Button click listeners can be defined as lambda expressions
GreetService greetService = new GreetService();
Button button = new Button( "Say hello" ,
e -> Notification.show( greetService.greet( textField.getValue() ) ) );
// Theme variants give you predefined extra styles for components.
// Example: Primary button is more prominent look.
button.addThemeVariants( ButtonVariant.LUMO_PRIMARY );
// You can specify keyboard shortcuts for buttons.
// Example: Pressing enter in this view clicks the Button.
button.addClickShortcut( Key.ENTER );
// Use custom CSS classes to apply styling. This is defined in shared-styles.css.
this.addClassName( "centered-content" );
Select < Animal > animalSelect = new Select <>();
animalSelect.setItems( Animal.values() );
this.add( animalSelect , new TextField( "Bogus1" ) , new TextField( "Bogus2" ) , new TextField( "Bogus3" ) , new TextField( "Bogus4" ) , textField , button );
}
}
Вот результат при работе с встроенный сервер Jetty в клиент Microsoft Edge v 80.0.361.57 в macOS Mojave 10.14.6.
Мне не ясно, нужно ли аннотировать каждый из ваших классов пользовательского интерфейса или просто MainView.java
. Я думаю, вы должны аннотировать каждый класс пользовательского интерфейса.