0

vaadinフレームワーク全般に問題があります。

vaadinアプリケーション(MyFirst)を拡張するクラスを作成し、その後、vaadinビジュアルデザイナー(MyFormApp)を使用してカスタムコンポーネントを作成しました。

カスタムコンポーネントMyFormAppをインスタンス化し、それをMyFirstのメインウィンドウに追加しました。

アプリをデプロイした後、vaadinによって生成されたページにはコンポーネントが表示されません。

私のコード:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.example.vaadin;

import com.vaadin.Application;
import com.vaadin.ui.*;

/**
*
* @author anis.bouchenafa
*/
public class MyFirst extends Application{


private Button newContact = new Button("Add contact");
private Button search = new Button("Search");
private Button share = new Button("Share");
private Button help = new Button("Help");
private HorizontalSplitPanel horizontalSplit = new HorizontalSplitPanel();
private TextField tf = new TextField();

@Override
public void init() {
    //buildMainLayout();

    MyFirstApp a = new MyFirstApp();
   Window w = new Window("aness conf");
   w.addComponent(a);
   setMainWindow(w);


}

}

私の2番目のクラスはMyFirstApp(カスタムコンポーネント)です:

package com.example.vaadin;



import com.vaadin.annotations.AutoGenerated;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.LoginForm;

public class MyFirstApp extends CustomComponent {

@AutoGenerated
private AbsoluteLayout mainLayout;
@AutoGenerated
private LoginForm loginForm_2;

/*- VaadinEditorProperties=        {"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */



/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

/**
 * The constructor should first build the main layout, set the
 * composition root and then do any custom initialization.
 *
 * The constructor will not be automatically regenerated by the
 * visual editor.
 */
public MyFirstApp() {
    buildMainLayout();
    setCompositionRoot(mainLayout);

    // TODO add user code here
}

@AutoGenerated
private AbsoluteLayout buildMainLayout() {
    // common part: create layout
    mainLayout = new AbsoluteLayout();
    mainLayout.setImmediate(false);
    mainLayout.setWidth("100%");
    mainLayout.setHeight("100%");

    // top-level component properties
    setWidth("100.0%");
    setHeight("100.0%");

    // loginForm_2
    loginForm_2 = new LoginForm();
    loginForm_2.setStyleName("v-loginform");
    loginForm_2.setImmediate(false);
    loginForm_2.setWidth("340px");
    loginForm_2.setHeight("-1px");
    mainLayout.addComponent(loginForm_2, "top:160.0px;left:200.0px;");

    return mainLayout;
}

}

サーブレットの実行後、ブラウザには何も表示されません。

4

3 に答える 3

2

AbsoluteLayoutでは、次のようにコンポーネントの表示位置を定義する必要があります。

mainLayout = new AbsoluteLayout();
mainLayout.setWidth("400px");
mainLayout.setHeight("350px");

詳細については、 https ://vaadin.com/book/-/page/layout.absolutelayout.htmlを参照してください。

于 2014-10-07T14:36:05.517 に答える
1

さて、あなたは視覚的に空であるものをbuildMainLayout()と呼びます。AbsoluteLayoutとLoginForm()のみが含まれ、コンポーネントは含まれていません。これは、ボーダレスHTMLテーブルを生成し、テキストを追加しないようなものです。

追加したいと思うコンポーネント

private Button newContact = new Button("Add contact");
private Button search = new Button("Search");
private Button share = new Button("Share");
private Button help = new Button("Help");
private HorizontalSplitPanel horizontalSplit = new HorizontalSplitPanel();
private TextField tf = new TextField();

したほうがいい

  1. 「クラスMyFirstApp」で宣言および初期化され、
  2. addComponent()を介してレイアウトに追加されます

レイアウトの詳細(およびその他の基本)は、BookofVaadinでも説明されています。

ヴァーディンの本: https ://vaadin.com/book/-/page/intro.html

ヴァーディンの本-レイアウト:レイアウト:https://vaadin.com/book/-/page/layout.html

Vaadinレイアウトの例: http ://demo.vaadin.com/sampler#Layouts

于 2012-12-20T14:22:51.787 に答える
0

Vaadin 7でビジュアルエディターを使用したときに同じ問題が発生しました。ただし、LayoutプロパティをAbsoluteLayoutから他のレイアウト(GridLayout、Horizo​​ntalLayout、VerticalLayoutなど)に変更した場合。コンポーネントが表示されます。お役に立てば幸いです。

于 2014-09-04T10:52:57.963 に答える