--- tags: tirc-library --- # JavaFxTools 專案內包含以JavaFx為基礎開發的UI元件 ### maven ```xml= <dependency> <groupId>tirc.lib.ui</groupId> <artifactId>JavaFxTools</artifactId> <version>0.0.4</version> </dependency> ``` ## MultiPicCanvas 此元件提供以行列方式放置多張圖片, 並依據Canvas大小自動縮放的功能。 ### 使用範例碼 ```java= public class DemoController { @FXML private Pane canvas_parent_pane; @FXML public void initialize() { canvas_parent_pane.getChildren().add(initMultiPictureCanvas()); } private MultiPicCanvas initMultiPictureCanvas() { int pic_actual_width = 643; int pic_actual_height = 485; int rows = 7; int cols = 7; Image image = new Image("TestPicture.jpg"); MultiPicCanvas multi_picture_canvas = new MultiPicCanvas( rows, cols, pic_actual_width, // 圖片實際寬度 pic_actual_height); // 圖片實際高度 // 圖片間間隔距離 multi_picture_canvas.setSpace(10); // 依照row與col的序號來設定圖片 for(int row = 0; row < rows; row++) { for(int col = 0;col < cols; col++) { multi_picture_canvas.setImage(row, col, image); } } // 監聽點擊事件 multi_picture_canvas.setListener((row, col)->{ System.out.println(String.format("onClick row:%d col:%d", row, col)); }); // 針對父元件進行保持比例自動縮放功能 multi_picture_canvas.bindParentSize(canvas_parent_pane); return multi_picture_canvas; } } ``` ## MultiPicControl 此元件以MultiPicCanvas為主體, 再加入疊上文字功能, 可傳入JavaFx text元件。 ```java= public class DemoController { @FXML private Pane canvas_parent_pane; @FXML public void initialize() { canvas_parent_pane.getChildren().add(initMultiPictureCanvas()); } private Control initMultiPictureCanvas() { int pic_actual_width = 643; int pic_actual_height = 485; int rows = 7; int cols = 7; Image image = new Image("TestPicture.jpg"); MultiPicControl control = new MultiPicControl(); // 初始化MultiPicCanvas control.initCanvas( rows, cols, pic_actual_width, // 圖片實際寬度 pic_actual_height); // 圖片實際高度 // 圖片間間隔距離 control.setSpace(10); // 依照row與col的序號來設定圖片 for(int row = 0; row < rows; row++) { for(int col = 0;col < cols; col++) { control.setImage(row, col, image); } } // 監聽點擊事件 control.setListener((row, col)->{ System.out.println(String.format("onClick row:%d col:%d", row, col)); }); // 針對父元件進行保持比例自動縮放功能 control.bindParentSize(canvas_parent_pane); //輸入其父元件 // 文字功能 for(int row = 0; row < rows; row++) { for(int col = 0;col < cols; col++) { Text t = new Text(); t.setText("Hello " + row + "," + col); t.setFill(Color.WHITE); control.setText(row, col, t); } } // 修改文字內容 control.setText(3, 3, "YA"); // 設定文字距離邊框距離 control.setTextPadding(5); // 設定文字對齊 control.setTextAlign(HPos.RIGHT, VPos.BOTTOM); return control; } } ``` # Release Note # ### v0.1 release date: 未定 ### * 加入MultiPicCanvas元件 * 加入使用Bind為基礎的I18N元件 * 加入MultiPicControl元件,可支援輸入JavaFx Text物件