2016-12-22 12 views
1
public void start(Stage stage) throws Exception { 

    FlowPane flowPane = new FlowPane(); 
    flowPane.setOrientation(Orientation.VERTICAL); 

    for(int i = 0; i < 101;i++) { 
     Label aLabel = new Label("Label number: " + i); 
     flowPane.getChildren().add(aLabel); 
    } 

    Scene applicationScene = new Scene(flowPane); 
    stage.setHeight(400.0); 
    stage.setWidth(400.0); 
    stage.setScene(applicationScene); 
    stage.show(); 
} 

ラベルがウィンドウ内になくても、すべてのラベルが同じ列に終わるようにコードを記述しようとしています(ラベルを表示可能にするためにscrollPaneを追加する予定です)。しかし、最初のラベルが塗りつぶされたときにラベルが自動的に次の列を塗りつぶし始めるので、理由はわかりません(example here)。これについてどうすればいいですか?シーン終了時にフローパネルが折り返されるのを防ぐ方法(

答えて

1

私はラベルが自動的にFlowPaneの機能だ最初のものが

を満たされている次の列まで を満たし始めるので、理由として見当もつかない。 documentationから:

FlowPaneはflowpaneの 境界でラップフローの子をレイアウト。 ...垂直フローペインは、列のノードをフローパネルの高さで折り返して配置します。

代わりVBoxを使用する必要があります。

public void start(Stage stage) throws Exception { 

    VBox vbox = new VBox(); 

    for(int i = 0; i < 101;i++) { 
     Label aLabel = new Label("Label number: " + i); 
     vbox.getChildren().add(aLabel); 
    } 

    Scene applicationScene = new Scene(vbox); 
    stage.setHeight(400.0); 
    stage.setWidth(400.0); 
    stage.setScene(applicationScene); 
    stage.show(); 
} 

あなたが表示するデータがたくさんある場合は、あなたもListViewを使用して検討するかもしれません。 ListViewはより複雑なAPI(選択を管理し、選択可能な場合は編集可能)を持ち、必要に応じて独自のスクロールバーを提供しますが、大量のデータの方が効率的です(基本的には、ユーザーがスクロールするときにそれらを再利用します)。

関連する問題