我对Java很陌生,我已经上过一门基础课程。目前,我正在使用vaadin作为我的框架来创建一个简单的webapp,但是在实现手风琴时遇到了问题。我希望在我的代码中有一些提示,在主应用程序中将手风琴转换到组件时出现了错误。
我目前的代码是:
主要java类:
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;
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);
}
}
}谢谢!
发布于 2014-08-08 16:11:40
您想做什么,只想将Accordion添加到您的页面中?代码中有一些逻辑错误。在错误行:horizontalSplit.setFirstComponent(accordion);,您试图添加accordion,它是Accordiontest类型的对象,它扩展了test类,而test类是您的Application类,当然它不是一个组件。
因此,您的继承层次结构存在一个问题。但是,如果您只想将该Accordion添加到您的应用程序中,您可以这样做:
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);
}
}然后,
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);
}
}
}https://stackoverflow.com/questions/25204539
复制相似问题