首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Vaadin 6实现手风琴

利用Vaadin 6实现手风琴
EN

Stack Overflow用户
提问于 2014-08-08 13:22:26
回答 1查看 135关注 0票数 0

我对Java很陌生,我已经上过一门基础课程。目前,我正在使用vaadin作为我的框架来创建一个简单的webapp,但是在实现手风琴时遇到了问题。我希望在我的代码中有一些提示,在主应用程序中将手风琴转换到组件时出现了错误。

我目前的代码是:

主要java类:

代码语言:javascript
复制
package Main;
import UI.Accordiontest;
import com.vaadin.ui.SplitPanel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;


public class test extends Application {

    private SplitPanel horizontalSplit = new SplitPanel(
            SplitPanel.ORIENTATION_HORIZONTAL);
    private Accordiontest accordion = new Accordiontest(this);

    public void init() {
        buildMainLayout();
    }


    private void buildMainLayout () {
// error: cast accordion to Component
        horizontalSplit.setFirstComponent(accordion);
//error end
        setMainWindow(new Window("test))'
        VerticalLayout layout = new VerticalLayout();
        layout.setSizeFull();
        layout.addComponent(horizontalSplit);
        layout.setExpandRatio(horizontalSplit, 1);
        getMainWindow().setContent(layout);

UI手风琴测试:包UI;

代码语言:javascript
复制
import Main.test;
import com.vaadin.ui.Accordion;
import com.vaadin.ui.Label;

public class Accordiontest extends test{
    public Accordiontest(test app) {
        final Accordion accordion = new Accordion();

        for (int i = 0; i < 5;
            i++) {
        VerticalLayout layout = new VerticalLayout();
        accordion.addCOmponent(layout);
        layout.setCaption("tab" + (i + 1));
        Label label = new Label("These are the contents of Tab " + (i + 1) + ".");
        layout.addComponent(label);
        TextField textfield = new TextField("some text field");
        layout.addComponent(textfield);
         }
      } 
   }

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-08 16:11:40

您想做什么,只想将Accordion添加到您的页面中?代码中有一些逻辑错误。在错误行:horizontalSplit.setFirstComponent(accordion);,您试图添加accordion,它是Accordiontest类型的对象,它扩展了test类,而test类是您的Application类,当然它不是一个组件。

因此,您的继承层次结构存在一个问题。但是,如果您只想将该Accordion添加到您的应用程序中,您可以这样做:

代码语言:javascript
复制
package Main;
import UI.Accordiontest;
import com.vaadin.ui.SplitPanel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;


public class test extends Application {

    private SplitPanel horizontalSplit = new SplitPanel(
            SplitPanel.ORIENTATION_HORIZONTAL);
    private Accordiontest accordion = new Accordiontest();

    public void init() {
        buildMainLayout();
    }


    private void buildMainLayout () {
// No more casting errors because accordion extends Accordion which is component
        horizontalSplit.setFirstComponent(accordion);

        setMainWindow(new Window("test))'
        VerticalLayout layout = new VerticalLayout();
        layout.setSizeFull();
        layout.addComponent(horizontalSplit);
        layout.setExpandRatio(horizontalSplit, 1);
        getMainWindow().setContent(layout);
    }
 }

然后,

代码语言:javascript
复制
import Main.test;
import com.vaadin.ui.Accordion;

public class Accordiontest extends Accordion {
    public Accordiontest() {
        super();
        for (int i = 0; i < 5; i++) {
            TextField textfield = new TextField("some text field");
            addTab(textfield, "Tab" + (i+1), null);
         }
      } 
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25204539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档