简体   繁体   English

Vaadin-如何使用UriFragmentUtility类?

[英]Vaadin - How can I use the UriFragmentUtility class?

How can I make this? 我该怎么做? https://vaadin.com/book/-/page/advanced.urifu.html#figure.advanced.urifu https://vaadin.com/book/-/page/advanced.urifu.html#figure.advanced.urifu

I would like to use a label (eg like in this page "Figure 11.12, Application State Management with URI Fragment Utility") and if the user click on it, then the browser focuses that paragraph. 我想使用一个标签(例如,在本页“图11.12,使用URI Fragment Utility进行应用程序状态管理”中),如果用户单击它,则浏览器将聚焦该段落。

One way is to use method UI.scrollIntoView(Component) after receiving UriFragmentChangedEvent . 一种方法是在接收UriFragmentChangedEvent之后使用方法UI.scrollIntoView(Component) Another way would be to use JavaScript. 另一种方法是使用JavaScript。 SSCCE (MainUI class): SSCCE(MainUI类):

VerticalLayout layout = new VerticalLayout();
Label up = new Label("Up");
Label middle = new Label("Middle");
Label down = new Label("Down");


@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = QwertUI.class)
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {
    Button buttonUp = new Button("Up");
    Button buttonMiddle = new Button("Middle");
    Button buttonDown = new Button("Down");
    buttonUp.addClickListener(this);
    buttonMiddle.addClickListener(this);
    buttonDown.addClickListener(this);
    up.setHeight("666px");
    middle.setHeight("666px");
    down.setHeight("666px");
    layout.addComponents(buttonUp, buttonMiddle, buttonDown, up, middle, down);
    setContent(layout);
    getPage().addUriFragmentChangedListener(
            new UriFragmentChangedListener() {
        public void uriFragmentChanged(
                UriFragmentChangedEvent source) {
            enter(source.getUriFragment());
         }
     });
     enter(getPage().getUriFragment());
}

private void enter(String uriFragment){

    UI ui = up.getUI();
    if(uriFragment != null){
        switch(uriFragment){
            case "Up": ui.scrollIntoView(up);; break;
            case "Middle": ui.scrollIntoView(middle); break;
            case "Down": ui.scrollIntoView(down); break;
        }
    }
}

@Override
public void buttonClick(ClickEvent event)
{
    getPage().setUriFragment(event.getButton().getCaption());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM