Vaadin 7 & 8 では、通常、実装の 1 つを使用して、サブクラスLayout
内でウィジェットを配置します。UI
たとえば、VerticalLayout
、HorizontalLayout
、およびGridLayout
。ピクセルの配置には、 を使用しますAbsoluteLayout
。もちろん、これらは互いに入れ子にすることができます。ただし、実行時に過度に複雑な HTML/CSS になる可能性があるため、ネスティングに夢中にならないでください。
ドキュメントが言うように、Panel
クラスは特別なコンテナです。単一のコンポーネントのみを含み、通常は. は、そのプロパティを表示する境界線とタイトル バーを表示します。これはサブウィンドウのようなものです。Layout
Panel
caption
あなたが言及したように、 aPanel
はスクロールをサポートしています。ただし、 で定義された Web ページLayout
はスクロールもサポートしていることに注意してください。
TextField
ウィジェットのスタックを表示する完全なサンプル アプリを次に示しますVerticalLayout
。
package com.basilbourque.example;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import javax.servlet.annotation.WebServlet;
import java.time.Instant;
/**
* This UI is the application entry point. A UI may either represent a browser window
* (or tab) or some part of an HTML page where a Vaadin application is embedded.
* <p>
* The UI is initialized using {@link #init(VaadinRequest)}. This method is intended to be
* overridden to add component to the user interface and initialize non-component functionality.
*/
@Theme ( "mytheme" )
public class MyUI extends UI {
@Override
protected void init ( VaadinRequest vaadinRequest ) {
final VerticalLayout layout = new VerticalLayout();
for ( int i = 1 ; i <= 100 ; i++ ) {
TextField textField = new TextField( String.format( "%3d" , i ) );
textField.setWidth( 17 , Unit.EM ); // Widen the field to fully display our contents.
textField.setValue( Instant.now().toString() );
layout.addComponents( textField );
}
setContent( layout );
}
@WebServlet ( urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true )
@VaadinServletConfiguration ( ui = MyUI.class, productionMode = false )
public static class MyUIServlet extends VaadinServlet {
}
}

ネスティングのアイデアVerticalLayout
やHorizontalLayout
、ナビゲーション パネル、ボタン/ツールバーなどについては…
CssLayout
内部の問題についてはPanel
、私はどちらもほとんど使用していません。の特定の幅と高さを適切に定義していないことに問題があると思われますCssLayout
。詳細とコードを投稿していないため、推測することしかできません。