2017-01-04 10 views
2

私は、この質問のためにこのような構造の単純なJavaFXクラスを用意しています。StackPaneをJavaFXのBorderPaneに埋め込む方法

BorderPane 
    StackPane 
     FlowPane 

BorderPaneにはFlowPaneを含むStackPaneが含まれています。

私はそのStackPaneを親のBorderPaneに埋め込むことを何度も試みてきましたが、何も動作していないようです。最終的な結果はStackPaneで背景が「赤」に設定されている必要があります。

コード:

import javafx.application.Application; 
import javafx.geometry.Orientation; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.canvas.Canvas; 
import javafx.scene.control.Menu; 
import javafx.scene.control.MenuBar; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.FlowPane; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.Region; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

/** 
* 
* @author A4XX-COLCRI 
*/ 
public class LogicGatesSimulator extends Application { 
    /** 
    * The root node of the application. 
    */ 
    Group root; 
    /** 
    * This is the top-level container child of root. 
    */ 
    BorderPane mainContainer; 
    /** 
    * Contains the canvas and represents the drawing area. 
    */ 
    Pane canvasContainer; 
    /** 
    * Defines where all the shapes will be drawn. 
    */ 
    Canvas canvas; 
    /** 
    * Defines the toolbox pane. 
    */ 
    StackPane toolboxPane; 
    /** 
    * Defines the toolbox flowpane. 
    */ 
    FlowPane toolbox; 
    /** 
    * Defines the top bar menu. 
    */ 
    MenuBar menu; 


    @Override 
    public void start(Stage primaryStage) { 
     // Inizializzazione degli elementi grafici 
     root = new Group(); 
     mainContainer = new BorderPane(); 
     canvasContainer = new Pane(); 
     canvas = new Canvas(); 
     toolboxPane = new StackPane(); 
     toolboxPane.setStyle("-fx-background-color: red; "); 
     toolbox = new FlowPane(Orientation.VERTICAL); 
     toolbox.setPrefWrapLength(250); 
     toolbox.minWidth(Region.USE_COMPUTED_SIZE); 
     toolbox.minHeight(Region.USE_COMPUTED_SIZE); 
     toolbox.maxWidth(Region.USE_COMPUTED_SIZE); 
     toolbox.maxHeight(Region.USE_COMPUTED_SIZE); 
     toolbox.prefHeight(Region.USE_COMPUTED_SIZE); 
     //toolbox.setStyle("-fx-background-color: red;"); 

     // Inizializzazione scena 
     Scene scene = new Scene(root, 1280, 800); 
     primaryStage.setTitle("Logic Gates Simulator"); 
     primaryStage.setScene(scene); 

     // Menu 
     menu = new MenuBar(); 
     Menu menuFile = new Menu("File"); 
     Menu menuEdit = new Menu("Edit"); 
     Menu menuView = new Menu("View"); 
     Menu menuAbout = new Menu("About"); 
     menu.getMenus().addAll(menuFile, menuEdit, menuView, menuAbout); 

     // Porte logiche nella toolbox 
     ImageView andImage = new ImageView(getClass().getResource("images/and.png").toExternalForm()); 
     ImageView nandImage = new ImageView(getClass().getResource("images/nand.png").toExternalForm()); 
     ImageView orImage = new ImageView(getClass().getResource("images/or.png").toExternalForm()); 
     ImageView norImage = new ImageView(getClass().getResource("images/nor.png").toExternalForm()); 
     ImageView xorImage = new ImageView(getClass().getResource("images/xor.png").toExternalForm()); 
     ImageView xnorImage = new ImageView(getClass().getResource("images/xnor.png").toExternalForm()); 
     ImageView notImage = new ImageView(getClass().getResource("images/not.png").toExternalForm()); 

     // Strutturazione 
     toolboxPane.getChildren().add(toolbox); 
     mainContainer.setLeft(toolboxPane); 
     mainContainer.setRight(canvasContainer); 
     toolbox.getChildren().addAll(andImage, nandImage, orImage, norImage, xorImage, xnorImage, notImage); 
     canvasContainer.getChildren().add(canvas); 
     root.getChildren().add(mainContainer); 

     // Mostra la scena 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 
}  

だから、基本的には、この左側の領域は、このように、完全に私のBorderPaneの左側を充填しなければならない背景がカバーすべき

enter image description here

を実行している自分のアプリケーションの写真その領域を正しく StackPaneからAnchorPaneに変更し、TopAnchor、LeftAnchorなどを0に設定しようとしましたが、動作しません。 ありがとうございます。

Group

+0

なぜあなたのシーンは 'BorderPane'ではなく' Group'ですか? – ItachiUchiha

答えて

2

あなたが構造記述から行動を起こし一部をommitingしています。

Groupは、自分の好みのサイズに子供をサイズ変更します。それは

は単に Groupを削除し、シーンのルートとして mainContainer BorderPaneを使用して... Groupまたはそれのファミリー・ツリーのいずれかには影響しませんので、ステージのサイズ変更サイズ変更はありません。

+0

うわー、私はグループにこの種の行動があるとは思わなかった。私はあなたが言ったように、すべてがうまくいった。どうもありがとうございました。 – Cris

関連する問題