2017-01-30 21 views
2

さて、私はこのコードを実行しますが、すべては左上にあります。ペインの別の場所を設定するにはどうすればいいですか?

円を中央に、下の4つのボタンを中央にするにはどうすれば変更できますか?

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.stage.Stage; 
import static javax.swing.Spring.height; 
import static javax.swing.Spring.width; 


public class MoveTheBall extends Application { 

@Override 
public void start(Stage primaryStage) throws Exception { 
    //Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 




    Button btn1 = new Button(); 
    btn1.setText("Left"); 
    btn1.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn2 = new Button(); 
    btn2.setText("Right"); 
    btn2.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn3 = new Button(); 
    btn3.setText("Up"); 
    btn3.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn4 = new Button(); 
    btn4.setText("Down"); 
    btn4.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 



    StackPane rootPane = new StackPane(); 



    HBox pane = new HBox(); 
    VBox pane2 = new VBox(); 


    Circle circle = new Circle(); 
    circle.centerXProperty().bind(pane.widthProperty().divide(2)); 
    circle.centerYProperty().bind(pane.heightProperty().divide(2)); 
    circle.setRadius(50); 
    circle.setStroke(Color.BLACK); 
    circle.setFill(Color.WHITE); 

    pane2.getChildren().add(circle); 
    pane.getChildren().addAll(btn1, btn2, btn3, btn4); 

    Scene scene = new Scene(rootPane, 400, 400); 
    rootPane.getChildren().addAll(pane,pane2); 
    BorderPane borderPane = new BorderPane(); 
    borderPane.setPrefSize(400, 400); 

    pane.setLayoutY(300); 
    pane2.setLayoutX(150); 
    primaryStage.setTitle("Move the circle!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

Here is a picture with the results and with black what I would like to make.

注:一部の輸入が必要ですが、これは私が含む必要がある何かされていません。 ありがとう!

答えて

2

期待どおりの出力では、レイアウトが多すぎます。試してみよう

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.stage.Stage; 
import static javax.swing.Spring.height; 
import static javax.swing.Spring.width; 
import javafx.geometry.Pos; 


public class Main extends Application { 

@Override 
public void start(Stage primaryStage) throws Exception { 
//Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
    Button btn1 = new Button(); 
    btn1.setText("Left"); 
    btn1.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn2 = new Button(); 
    btn2.setText("Right"); 
    btn2.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn3 = new Button(); 
    btn3.setText("Up"); 
    btn3.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    Button btn4 = new Button(); 
    btn4.setText("Down"); 
    btn4.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 
    Circle circle = new Circle(); 

    circle.setRadius(50); 
    circle.setStroke(Color.BLACK); 
    circle.setFill(Color.WHITE); 

    BorderPane rootPane = new BorderPane(); 
    rootPane.setCenter(circle); 
    HBox hb = new HBox(btn1, btn2, btn3, btn4); 
    hb.setAlignment(Pos.CENTER); 
    rootPane.setBottom(hb); 

    Scene scene = new Scene(rootPane, 400, 400); 
    primaryStage.setTitle("Move the circle!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
    } 
} 
+0

ワウありがとう!速い反応と結果が必要でした。 –

関連する問題