一、Stage 舞台
stage 是窗口,首先當然創建一個窗口。下面我們來探索窗口都有哪些功能。其中它繼承了window ,所以帶有window 的功能,其中帶有 Property 就是監聽的意思
- 窗口開始顯示的位置 primaryStage.setAlwaysOnTop(true) 是否顯示在頂部
- 全屏提醒(b必須要有screen) primaryStage.setFullScreenExitHint("提醒")
- 最大(小)高度和寬度 primaryStage.setMaxHeight(800); primaryStage.setMaxWidth(800);
- 是否可調整大小 primaryStage.setResizable(false);
- 設置標題 primaryStage.setTitle("標題")
- 頁面初始話的時候是最小化的 primaryStage.setIconified(true)
- 設置窗口的圖標 primaryStage.getIcons().add(new Image(path))
- 關閉窗口 primaryStage.close()
- 菜單欄中樣式控制 如 使用UTILITY 只有一個關閉的按鈕 primaryStage.initStyle(StageStyle.DECORATED)
- scene 跳過,基本沒有可用的
二、Screen 的使用
這個一般作用不大,可以獲取到計算機屏幕的信息。
Screen primary = Screen.getPrimary(); double dpi = primary.getDpi(); Rectangle2D bounds = primary.getBounds(); Rectangle2D visualBounds = primary.getVisualBounds(); double maxX = bounds.getMaxX(); double maxY = bounds.getMaxY(); double vmaxX = visualBounds.getMaxX(); double vmaxY = visualBounds.getMaxY(); System.out.println("屏幕dpi:"+dpi); System.out.println("屏幕大小:"+maxX+","+maxY); System.out.println("可視大小:"+vmaxX+","+vmaxY);
三、以AnchorPane為例說明基本屬性
用這個做一個示范,先探索里面的方法設置。不同pane,里面的作用不同。首先根據 SceneBuilder 格式進行探索,為了方便,我們需要在里面放幾個按鈕
1.通用屬性
- 可以對子節點的位置進行設置,當這個設置之后,子節點有些自己的設置就會失效。如 AnchorPane.bottomAnchor="20" AnchorPane.leftAnchor="20" AnchorPane.rightAnchor="20" AnchorPane.topAnchor="20" 這個設置全之后,子組件會隨着父組件的變化而變化。在圖形化工具中如下(這個是子類的圖形頁面),一定要設置完全,否則失效
- 在拖動的過程中,也可以設置 最大大小和最小的大小發現不起作用,位置也不起作用,就是上面的影響了
- 如果沒有設置上面的屬性,那么可以使用當前大小,以及位置,不會隨着父類拖動而改變,但是最大和最小沒有效果。
- disable 節點的禁用狀態,禁用后,不會觸發事件
- opacity 節點的透明度
- setNodeOrientation(NodeOrientation.LEFT_TO_RIGHT); 指定節點的繪制方向, INHERIT 標識跟從父類方向
- setVisible(true) 設置節點是否可見 不可見的節點不會有鼠標或者鍵盤的事件
- setFocusTraversable(true); 按照官方文檔定義,焦點移動遍歷。 用 shift + tab 鍵組合使用,可能是我用的按鈕的原因,這個功能沒有測試出來
- setCacheShape(true) 定義區域背景的顏色是穩定的,可以使用緩存
- setCenterShape 定義形狀是否以區域的寬度和高度為中心
- setScaleShape 定義形狀是否縮放匹配區域大小
- setOpaqueInsets 定義繪制完全不透明像素的區域的區域 這個功能還沒有測試出來
- setCursor 定義鼠標指針的形狀
- setEffect 設置顯示的效果 (絢麗的特效)
- setStyle 設置樣式,要使用 javafx 的css 樣式標准
- getStylesheets().add 添加css 文件
- getStyleClass().add 添加 相當於html中 class屬性
- setId() 類似於 css 中id屬性
- setBlendMode 用於將這個單獨的節點混合到它后面的場景中
- setCache 是否開啟緩存
- setCacheHint 緩存提示
- setDepthTest 是否啟動深度測試 如果禁止,將不再使用深度緩存區
- setMouseTransparent 鼠標是否透明 如果為真,表示不觸發鼠標事件
- setPickOnBounds 定義如鼠標的事件邊界
- setAccessibleRole 此節點可訪問角色
- setAccessibleHelp 此節點的可訪問幫助文本。 如果有工具提示,則使用該文檔
- setAccessibleText 設置屏幕閱讀器將要顯示的文本
- padding 節點的內邊距
- min width 最小寬度 prefwidth 設置寬度 max width 最大寬度 最大最小容易發生沖突
- layout X 相對父類的橫的坐標 layout Y 縱坐標
- rotate 旋轉度
- rotation axis 按照什么方向進行旋轉 x y z
- scale X 定義 X 軸的縮放因子
- isSnapToPixel 是否將其子類的位置調整為像素邊界
- 剩下的就是事件了,這里就不多介紹了