2014-12-04 101 views
0

如何在場景中間獲得白色矩形。我想保留自己的代碼以及它的高度和寬度。可能它應該用於設置X和Y佈局。但是我不知道怎麼做。當我設置它們時,它會從左上角調整它的大小。設置畫布佈局

代碼:

Pane paneCanvas = new Pane(); 

      final Canvas canvas = new Canvas(); 
      paneCanvas.setStyle("-fx-background-color: white;"); 
      canvas.setHeight(32); 
      canvas.setWidth(32); 

      paneCanvas.getChildren().add(canvas); 
      primaryStage.setTitle("Hello World!"); 
      primaryStage.setScene(scene); 
      primaryStage.show(); 

回答

0

嘗試這個例子...用於位置在場景的中間就可以計算出寬度以下公式:

layoutxcanvas =(widthscene/2) - (widthcanvas/2)

layoutycanvas =(heightscene/2) - (heightcanvas/2)

import java.awt.Graphics2D; 
import java.awt.Paint; 
import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.canvas.Canvas; 
import javafx.scene.control.Button; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.paint.Color; 

import javafx.stage.Stage; 

public class JavaFXApplication1 extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Pane paneCanvas = new Pane(); 

      final Canvas canvas = new Canvas(); 
      paneCanvas.setStyle("-fx-background-color: black;"); 

      canvas.setHeight(32); 
      canvas.setWidth(32); 
      canvas.getGraphicsContext2D().setFill(Color.WHITE); 
      canvas.getGraphicsContext2D().fillRect(0, 0, 32, 32); 

      canvas.setLayoutX((300/2)-(32/2)); 
      canvas.setLayoutY((300/2)-(32/2)); 

      paneCanvas.getChildren().add(canvas); 
      Scene scene=new Scene(paneCanvas,300,300); 
      primaryStage.setTitle("Hello World!"); 
      primaryStage.setScene(scene); 
      primaryStage.show(); 
    } 

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