显然是一个错误
我尝试了您的代码,并验证了问题。似乎是一个错误。所以我开了一张问题单,#7738。
我在布局中添加了一个彩色虚线边框以显示正在发生的事情。请参阅我的这个答案,以在 Vaadin Flow 中为布局添加边框。
这是一个完整的示例应用程序。
顺便说一句,我怀疑您可以跳过对getElement
. 该类本身HorizontalLayout
提供了一个getStyle
方法,这显然是实现相同目的的便捷方法。无论是否调用,您的问题都会出现getElement
。
package work.basil.example;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
/**
* The main view contains a button and a click listener.
*/
@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
{
public MainView ( )
{
HorizontalLayout plain = this.makeLayout();
HorizontalLayout reversed = this.makeLayout();
reversed.getStyle().set( "flex-direction" , "row-reverse" );
this.add( plain , reversed );
}
private HorizontalLayout makeLayout ( )
{
// Widgets
Button confirmButton = new Button( "Save" );
Button cancelButton = new Button( "Cancel" );
// Arrange
HorizontalLayout layout = new HorizontalLayout();
layout.add( confirmButton );
layout.add( cancelButton );
// Style
layout.getStyle().set( "border" , "4px dotted DarkOrange" );
return layout;
}
}
和截图。使用 IntelliJ 2019.3.3 中的 Jetty 服务器运行 Vaadin 14.1.18、Java 13、macOS Mojave。客户端是 Microsoft Edge,版本 80.0.361.62。Safari 技术预览版 Release 101(Safari 13.2、WebKit 14610.1.3.1)和 Firefox 开发者版 74.0b9(64 位)中的结果类似。
解决方法
现在,放弃使用 Flexbox 逆序。编写条件代码,以适当的顺序添加按钮。