当前位置: 首页 > news >正文

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.lryc.cn/news/391556.html

相关文章:

  • 学会python——用python制作一个登录和注册窗口(python实例十八)
  • Vue3+Element-plus的表单重置
  • pytorch中的contiguous()
  • Windows系统安装分布式搜索和分析引擎Elasticsearch与远程访问详细教程
  • 深入理解计算机系统 CSAPP 家庭作业8.26
  • 界面材料知识
  • 【Git】远程仓库操作
  • clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装
  • 短视频电商源码的优势及软件架构解析
  • Git使用[推送大于100M的文件后解救办法]
  • RClone挂载有阿里云的AList
  • [ruby on rails]rails6.0升级6.1
  • 大模型日报 2024-07-04
  • 技术成神之路:设计模式(一)单例模式
  • 四、(3)补充beautifulsoup、re正则表达式、标签解析
  • Vscode快捷键崩溃
  • Spring Boot中的开发工具与插件推荐
  • qt6 获取百度地图(一)
  • overlap的uORF对TE的抑制程度为什么显著高于non-overlap的uORF
  • 面向高精度导航定位领域的UM980RTK定位模块
  • 145-四路16位125Msps AD FMC子卡模块
  • 服务器被劫持
  • 康姿百德磁性床垫好不好,效果怎么样靠谱吗
  • [吃瓜教程]南瓜书第5章神经网络
  • 装饰模式解析:基本概念和实例教程
  • 211.xv6——3(page tables)
  • yum使用报错:ImportError: /lib64/libxml2.so.2: file too short
  • 【Android面试八股文】你是怎么保证Android设备的时间与服务器时间同步的?(使用NTP和TrueTime方案)
  • 解决Python爬虫开发中的数据输出问题:确保正确生成CSV文件
  • SCI一区TOP|徒步优化算法(HOA)原理及实现【免费获取Matlab代码】