生活随笔
收集整理的這篇文章主要介紹了
                                
JavaFX技巧1:可调整大小的Canvas
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
 
                                
                            
                            
                              在使用FlexGanttFX時(shí),我不得不處理很多JavaFX Canvas節(jié)點(diǎn)。 我正在使用它在時(shí)間軸上呈現(xiàn)活動(dòng)。 甘特圖中的每一行都是一個(gè)Canvas節(jié)點(diǎn)。 用戶可以選擇單獨(dú)調(diào)整每行的大小。 因此,我不得不找出調(diào)整畫布大小的最佳方法,這種現(xiàn)成的方法無法調(diào)整大小。 下面的清單顯示了如何實(shí)現(xiàn)此目的。 
 
所需的主要步驟是: 
 -  創(chuàng)建Canvas的子類。 
 -  重寫isResizable()方法并返回true。 
 -  重寫prefWidth()和prefHeight()方法。 返回Canvas.getWidth()和Canvas.getHeight()的值。 
 -  將偵聽器添加到“ 畫布”的width和height屬性中,以便在畫布大小更改時(shí)觸發(fā)重繪。 
 -  將“畫布”的width和height屬性綁定到父窗格的width和height屬性。 
 
 import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;/*** Tip 1: A canvas resizing itself to the size of*        the parent pane.*/
public class Tip1ResizableCanvas extends Application {class ResizableCanvas extends Canvas {public ResizableCanvas() {// Redraw canvas when size changes.widthProperty().addListener(evt -> draw());heightProperty().addListener(evt -> draw());}private void draw() {double width = getWidth();double height = getHeight();GraphicsContext gc = getGraphicsContext2D();gc.clearRect(0, 0, width, height);gc.setStroke(Color.RED);gc.strokeLine(0, 0, width, height);gc.strokeLine(0, height, width, 0);}@Overridepublic boolean isResizable() {return true;}@Overridepublic double prefWidth(double height) {return getWidth();}@Overridepublic double prefHeight(double width) {return getHeight();}}@Overridepublic void start(Stage stage) throws Exception {ResizableCanvas canvas = new ResizableCanvas();StackPane stackPane = new StackPane();stackPane.getChildren().add(canvas);// Bind canvas size to stack pane size.canvas.widthProperty().bind(stackPane.widthProperty());canvas.heightProperty().bind(stackPane.heightProperty());stage.setScene(new Scene(stackPane));stage.setTitle("Tip 1: Resizable Canvas");stage.show();}public static void main(String[] args) {launch(args);}
}
 運(yùn)行時(shí),您應(yīng)該看到以下內(nèi)容: 
 
  翻譯自: https://www.javacodegeeks.com/2014/04/javafx-tip-1-resizable-canvas.html
                            總結(jié)
                            
                                以上是生活随笔為你收集整理的JavaFX技巧1:可调整大小的Canvas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。