gpt4 book ai didi

Java/Vaadin - 对各个 View 使用不同的主题

转载 作者:行者123 更新时间:2023-12-01 09:40:24 25 4
gpt4 key购买 nike

简短版本:Vaadin 是否支持在运行的应用程序中为不同的 View /布局/组件使用不同的主题?

更长的版本:我试图实现一些非常基本的功能/“模块化”,其中提供了一个扩展 View 的类,然后将其添加到特定的容器中。使用此处所示的方法,目前可以“正常”工作 https://stackoverflow.com/a/60775/3560336 ,查找特定的类。但此 View 现在将使用我的应用程序主 UI 中使用的主题。有什么方法可以允许此 View (或任何其他 View ,例如 CustomComponent)使用另一个主题?

最佳答案

据我所知,主题在运行时是可以切换的(请参阅下面的示例代码),但它们是在全局/UI 级别设置的。如果 View 完全更改,并且您没有任何不得更改的公共(public)部分(例如菜单栏),那么这可能适合您。

public class MyUI extends UI {
@Override
protected void init(VaadinRequest request) {
VerticalLayout content = new VerticalLayout();
content.setSizeFull();
setContent(content);

content.addComponent(new TextField());
content.addComponent(new Button("Switch theme", e -> {
if (getTheme().equals("mytheme1")) {
setTheme("mytheme2");
} else {
setTheme("mytheme1");
}
}));
}
}

Vaadin theme switching

否则,主题引擎允许您 define your own styles (甚至覆盖默认组件)为您的各种组件并使用 addStyleName() 应用它们:

Java 类:

myButton.addStyleName("red-border");

主题配置:

@mixin mytheme1 {
@include valo;
// Insert your own theme rules here

.red-border {
// custom style added with addStyleName()
border: 1px red solid;
}

.v-button {
// global override of default v-button rule
background-color: green;
}
}

Button styling

关于Java/Vaadin - 对各个 View 使用不同的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38504036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com