JavaFx基礎知識

1.Stage

舞臺

?如此這樣的一個框框,舞臺只是這個框框,并不管里面的內容

    public void start(Stage primaryStage) throws Exception {primaryStage.setScene(new Scene(new Group()));primaryStage.getIcons().add(new Image("/icon/img.png"));  //更換舞臺角標//        primaryStage.setIconified(true);  //設置最小化
//        primaryStage.setMaximized(true);  //設置最大化
//        primaryStage.close();             //關閉primaryStage.setWidth(500);primaryStage.setHeight(500);          //舞臺大小primaryStage.heightProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {System.out.println("當前高度:" + t1.doubleValue());}});     //監聽這個舞臺的高度(可以通過這個,進行改變里面的控件的大小),寬度同理//    primaryStage.setFullScreen(true);     //設置全屏(不同于最大化)
//    primaryStage.setResizable(false);     //固定舞臺大小primaryStage.show();

模態...?

源代碼:

package Test;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.StageStyle;public class Test extends Application {public static void main(String[] args) {launch();}@Overridepublic void start(Stage primaryStage) throws Exception {primaryStage.setScene(new Scene(new Group()));primaryStage.getIcons().add(new Image("/icon/img.png"));  //更換舞臺角標//        primaryStage.setIconified(true);  //設置最小化
//        primaryStage.setMaximized(true);  //設置最大化
//        primaryStage.close();             //關閉primaryStage.setWidth(500);primaryStage.setHeight(500);          //舞臺大小primaryStage.heightProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {System.out.println("當前高度:" + t1.doubleValue());}});// primaryStage.setResizable(false);     //固定舞臺大小// primaryStage.setFullScreen(true);     //設置全屏primaryStage.initStyle(StageStyle.UNIFIED);//unified 沒有詳細的邊框primaryStage.initStyle(StageStyle.DECORATED);//默認窗口primaryStage.setOpacity(0.5);           //透明
//        primaryStage.setAlwaysOnTop(true);      //窗口始終在最前primaryStage.show();}
}

2.scene

設置光標:

 public void start(Stage primaryStage) throws Exception {Scene scene = new Scene(new Group());scene.setCursor(Cursor.CLOSED_HAND);  //設置鼠標光標,(這里類型是手)primaryStage.setScene(scene);primaryStage.show();}

?打開網頁

3.組件

? ? ? 1.Botton

    public void start(Stage primaryStage) throws Exception {Group group = new Group();Scene scene = new Scene(group,720,480);Button button = new Button("按鈕");button.setLayoutX(200);button.setLayoutY(200);button.setPrefHeight(200);   //按鈕大小button.setPrefWidth(200);button.setFont(Font.font("sans-serif",40));  //按鈕中的字體類型,大小//設置按鈕格式BackgroundFill bgf = new BackgroundFill(Paint.valueOf("#C1FFC1"), new CornerRadii(20),new Insets(10)); //按鈕環境填充的顏色,圓角,內邊距Background bg = new Background(bgf);button.setBackground(bg);group.getChildren().add(button);//        scene.setCursor(Cursor.CLOSED_HAND);  //設置鼠標光標primaryStage.setScene(scene);primaryStage.show();

效果:

?

?上面再添加下面代碼

//設置邊界BorderStroke bs = new BorderStroke(Paint.valueOf("#FFD700"),BorderStrokeStyle.SOLID,new CornerRadii(20),new BorderWidths(10));Border border = new Border(bs);button.setBorder(border);

?效果圖:

?

?

?使用css樣式

JavaFX CSS Reference Guide (oracle.com)

 button.setStyle("-fx-background-color: #C1FFC1;" +"-fx-text-fill:red;"+"-fx-background-radius:20;");

如果寫入這樣的代碼

效果圖:

?按鈕設置監聽事件

 button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {Button b = (Button) event.getSource();   //監聽事件可以獲取這個按鈕的信息System.out.println("按鈕中的文本是:" +b.getText());  }});

鼠標監聽,且是左鍵(可以通過點擊事件,得到事件的信息

        button.setOnMouseClicked(new EventHandler<MouseEvent>() {@Overridepublic void handle(MouseEvent event) {
//                System.out.println(event.getButton().name());if(event.getClickCount() == 2 && event.getButton().name().equals(MouseButton.PRIMARY.name())){System.out.println("左鍵雙擊");}}});

鍵盤監聽

 button.setOnKeyPressed(new EventHandler<KeyEvent>() {@Overridepublic void handle(KeyEvent event) {System.out.println(event.getCode().name());}});//注意,這里如果是中文輸入法會undefined

?快捷鍵

(這里沒進行深入了解,以后如果需要再來看)JavaFX視頻教程第11課,設置快捷鍵_嗶哩嗶哩_bilibili

源代碼:

    @Overridepublic void start(Stage primaryStage) throws Exception {Group group = new Group();Scene scene = new Scene(group,720,480);Button button = new Button("按鈕");button.setLayoutX(200);button.setLayoutY(200);button.setPrefHeight(200);   //按鈕大小button.setPrefWidth(200);button.setFont(Font.font("sans-serif",40));  //按鈕中的字體類型,大小//設置按鈕格式
//        BackgroundFill bgf = new BackgroundFill(Paint.valueOf("#C1FFC1"), new CornerRadii(20),new Insets(10)); //按鈕環境填充的顏色,圓角,內邊距
//        Background bg = new Background(bgf);
//        button.setBackground(bg);
//        //設置邊界
//        BorderStroke bs = new BorderStroke(Paint.valueOf("#FFD700"),BorderStrokeStyle.SOLID,new CornerRadii(20),new BorderWidths(10));  //顏色,邊界線的類型(虛線...),圓角,線的寬度。
//        Border border = new Border(bs);
//        button.setBorder(border);button.setStyle("-fx-background-color: #C1FFC1;" +"-fx-text-fill:red;"+"-fx-background-radius:20;");//        button.setOnAction(new EventHandler<ActionEvent>() {
//            @Override
//            public void handle(ActionEvent event) {
//                Button b = (Button) event.getSource();   //監聽事件可以獲取這個按鈕的信息
//                System.out.println("按鈕中的文本是:" +b.getText());
//            }
//        });button.setOnMouseClicked(new EventHandler<MouseEvent>() {@Overridepublic void handle(MouseEvent event) {
//                System.out.println(event.getButton().name());if(event.getClickCount() == 2 && event.getButton().name().equals(MouseButton.PRIMARY.name())){System.out.println("左鍵雙擊");}}});button.setOnKeyPressed(new EventHandler<KeyEvent>() {@Overridepublic void handle(KeyEvent event) {System.out.println(event.getCode().name());}});group.getChildren().add(button);//        scene.setCursor(Cursor.CLOSED_HAND);  //設置鼠標光標primaryStage.setScene(scene);primaryStage.show();

2.輸入框,密碼框,標簽

????????1.TextField

文本框的提示,大小,字樣(同控件button一樣,可以使用css,或者直接進行編輯樣式)

    public void start(Stage primaryStage) throws Exception {TextField textField = new TextField();TextField textField2 = new TextField();//提示Tooltip tip = new Tooltip("提示");tip.setStyle("-fx-font-size:15px;");textField.setTooltip(tip);textField.setLayoutX(200);textField.setLayoutY(200);textField2.setLayoutX(200);textField2.setLayoutY(250);textField.setPromptText("你好,世界");   //文本(并不是所有時候都顯示,只能光標不在,文本框中內容為空時才展示textField.setFocusTraversable(false);  //起始時光標不會在文本框獲得焦點textField.textProperty().addListener(new ChangeListener<String>() {@Overridepublic void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {//監聽輸入的長度if(newValue.length() > 7){   //文本框中的字符不會大于7textField.setText(oldValue);}}});Group gp = new Group();gp.getChildren().add(textField);gp.getChildren().add(textField2);Scene scene = new Scene(gp,720,480);primaryStage.setScene(scene);primaryStage.show();
 

這里如果要限制文本框中的輸入個數,可以使用一個Property監聽器,進行判斷。(比如后面使用郵箱時,長度就可以使用這個)。

? ? ? ? 2.PassWordField

????????3.Label

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40800.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【不銹鋼酸退作業區退火爐用高溫輻射計快速安裝】

項目名稱 不銹鋼酸退作業區退火爐用高溫輻射計快速安裝 改造實施項目簡介項目提出前狀況:不銹鋼生產過程中,各種型號的不銹鋼帶鋼在退火工藝中對帶鋼溫度的準確性要求很高,帶鋼溫度的檢測直接影響帶鋼的產品質量,不銹鋼帶鋼溫度測量依靠的是高溫輻射計,其測量的準確性、穩…

【Python機器學習】算法鏈與管道——通用的管道接口

Pipeline類補單可以用于預處理和分類&#xff0c;實際上還可以將任意數量的估計器連接在一起。例如&#xff0c;我們可以構建一個包含特征提取、特征選擇、縮放和分類的管道&#xff0c;總共有4個步驟。同樣的&#xff0c;最后一步可以用聚類或回歸代替。 對于管道中估計器的唯…

@Validated 根據字段的值不同,動態分組校驗

GroupSequenceProvider 配置 作用域只在單個對象的字段里 Data GroupSequenceProvider(value TestProvider.class) public class TestRO {NotNull(message "不能為空",groups ValidatedRemark.A.class)Pattern(regexp "2|3|",message "只能為2,…

vue2使用use注冊自定義指令實現權限控制

版本環境 vue的版本是^2.6.12&#xff0c;將會使用到Vue.use()、Vue.directive() 適用環境 頁面某些按鈕&#xff0c;需要受到當前登錄用戶的“角色”“權限”的影響&#xff0c;通過store獲取角色role和權限permission&#xff0c;通過自定義指令的方式&#xff0c;控制某一…

antd DatePicker日期選擇框限制最多選擇一年

實現效果 實現邏輯 import React, { useState } from react;const ParentComponent () > {const [dates, setDates] useState(null);const disabledDate (current) > {if (!dates) {return false;}const tooLate dates[0] && current.diff(dates[0], days) &…

Appium自動化測試框架1

電腦的瀏覽器 手機的瀏覽器 手機上的app 原生的應用 純java 手機上的app apk 移動網頁應用 純HTML CSS 手機的瀏覽器上 電腦的瀏覽器上 混合應用 java html css python代碼 Appium python庫 Appium 手機 都是代表本機 0.0.0.0 127.0.0.1 localhost 如何啟動app 啟動參…

土壤養分化驗儀:農業生態與可持續發展

隨著現代農業技術的不斷進步&#xff0c;土壤養分化驗儀在農業生產中扮演著越來越重要的角色。這款高科技設備以其高精度、高效率的特點&#xff0c;為農業生態與可持續發展提供了強有力的支撐。 一、農田土壤監測與管理 農田是土壤養分化驗儀最主要的應用場所。通過對農田土壤…

【AI】DeepStream(14):圖像分割deepstream-segmentation-test示例演示

【AI】AI學習目錄匯總 1、簡介 deepstream-segmentation-test示例演示了圖像的語義分割。兩個配置文件,分別加載U-Net和Res-UNet兩種分割模型 unet_output_graph.uffunetres18_v4_pruned0.65_800_data.uffU-Net是一個在生物醫學圖像分割領域廣泛應用的卷積神經網絡(CNN),…

集團型企業組織架構復雜,業務線多,如何進行高效費用管控?

企業管理中流行這樣一句話&#xff1a;“企業轉型&#xff0c;財務先行”。對集團型企業而言&#xff0c;當今的發展形勢下&#xff0c;通過財務戰略全面轉型、最終撬動企業價值提升&#xff0c;是一件難而正確的事情。 集團企業具有經營規模大、產業鏈多、分支機構多、地域跨度…

地下電子標識器探測儀ED8000選型注意事項

ED8000探測儀是一臺集成了多頻率、多種ID標識器調制模式、高低靈敏度調節、可讀寫標識器等全功能、高性能電子標識器探測儀。它有著極高的靈敏度,同時具備良好的噪聲抑制能力&#xff0c;不僅適合專業測繪人員&#xff0c;普通操作人員也可以輕松掌握。 ED8000可支持模擬電子標…

洛谷 P1042 [NOIP2003 普及組] 乒乓球

洛谷 P1042 [NOIP2003 普及組] 乒乓球 題目背景 國際乒聯現在主席沙拉拉自從上任以來就立志于推行一系列改革&#xff0c;以推動乒乓球運動在全球的普及。其中 11 11 11 分制改革引起了很大的爭議&#xff0c;有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位…

2024亞洲國際餐飲展覽會(北京餐飲展|火鍋展|預制菜展會)

2024北京餐飲展會&#xff0c;2024北京食材展會&#xff0c;2024北京火鍋展會&#xff0c;2024北京火鍋食材展會&#xff0c;2024北京預制菜展會&#xff0c;2024北京預制食材展會&#xff0c; 2024亞洲國際餐飲展覽會&#xff08;北京餐飲展|火鍋展|預制菜展會&#xff09; …

【C語言】刷題筆記 Day2

【筆記】 【1】局部變量不初始化&#xff0c;默認放的隨機值。 1 int n0; 2 scanf("%d",&n); //13.141 【2】這里雖然輸入的是一個浮點數&#xff0c;但是只取整數部分。 【3】3.156e7 表示的是3.156*10的7次方。 【4】多組輸入&#xff0c;保存和不保存…

基于 Windows Server 2019 部署域控服務器

文章目錄 前言1. 域控服務器設計規劃2. 安裝部署域控服務器2.1. 添加 Active Directory 域服務2.2. 將服務器提升為域控制器2.3. 檢查域控服務器配置信息 3. 管理域賬號3.1. 新建域管理員賬號3.2. 新建普通域賬號 4. 服務器加域和退域4.1. 服務器加域操作4.2. 服務器退域操作 總…

Iperf基本用法

Iperf是一款開源的網絡性能測試工具&#xff0c;它可以用來測量網絡帶寬、延遲、抖動和數據包丟失等網絡性能指標。Iperf支持TCP和UDP協議&#xff0c;可以用于點對點或客戶端-服務器等模式的網絡測試。 安裝Iperf 在Linux系統中&#xff0c;您可以使用包管理器安裝Iperf。例如…

記錄一下簡單導入導出excel二級表頭

數據庫導入導出表頭 之前的工具類GenerateExcelToFile新增兩個導出這種二級表頭方法 package com.njry.utils;import cn.hutool.core.util.IdUtil; import com.njry.config.FileProperties; import com.njry.exception.BadRequestException; import org.apache.poi.hssf.user…

OpenGL的學習之路

Qt如何創建OpenGL的渲染窗口&#xff1f; 類比GLFW庫&#xff0c;Qt提供了OpenGL的渲染窗口類QOpenGLWidget&#xff1a; 1、重寫initializeGL()和resizeGL()函數來設置OpenGL狀態并提供透視圖轉換。 2、重寫paintGL()來繪制3D場景&#xff0c;只調用OpenGL函數。 3、還可以…

python 基礎綜合應用——小開發

#python 基礎綜合應用——小開發 綜合復習 變量- 循環- 函數- 模塊 開發 名片管理系統 名片管理系統介紹 名片管理系統可以理解成花名冊軟件&#xff0c;通過個人新建人的信息后可以進行查詢等簡單操作的程序 名片管理系統有三個作用&#xff0c; 1.新建名片 2.顯示全部名…

【設計模式】裝飾者模式里Java實現

插&#xff1a; AI時代&#xff0c;程序員或多或少要了解些人工智能&#xff0c;前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家(前言 – 人工智能教程 ) 堅持不懈&#xff0c;越努力越幸運&#xff0c;大家…

【VIM的使用】

Vim 是一個非常強大的文本編輯器&#xff0c;尤其在 Linux 環境下被廣泛使用。它基于 vi 編輯器開發而來&#xff0c;增加了許多功能和改進。下面是一個簡化的 Vim 教程&#xff0c;幫助你快速上手&#xff1a; 啟動 Vim 要啟動 Vim&#xff0c;只需在終端中輸入 vim [filen…