JavaFx开发桌面软件

<?xml version="1.0" encoding="utf-8"?> JavaFx开发桌面软件

JavaFx开发桌面软件

1 Awt, Swing, SWT 和 JavaFx

Java中进行界面GUI开发,总共有四种方式。

  • Awt
    Awt是最早开发的界面库,为了满足跨平台的需要,达到“一次编写多处运行”的效果。在不同的系统下,使用系统的控件包装成统一的调用接口。但由于每个系统下面的控件不同,甚至,很多是缺失的。所以,效果并不太好。现在基本上没有人使用了。
  • Swing
    为了解决Awt在不同系统下控件不一样的问题,开发了一套独立运行在Java虚拟机上的控件,这就是Swing。由于它完全独立于操作系统,所以,可以在各个系统下运行,并且基本一致。但是,由于是虚拟出来的控件,因此运行效率上稍微差一些,比较慢。另外,默认的界面比较丑,但是,有Look And Feel,类似css这种,可以通过配置修改显示效果。精通之后,可以做很多的效果出来,但是入门比较困难,开发效率也不高。
  • SWT
    IBM为了开发Eclipse,开发出来的一套界面库,它基于Awt和Swing之间,效率等各方面,相当于各取了其中的一部分。已经不推荐使用了。
  • JavaFx
    JavaFx是Java中的最新的界面库,Oracle开发的。有两种编写模式,一种是纯代码编写,一种是代码+FXML。纯代码好理解,代码+FXML是什么呢?如果熟悉html编程的话,就比较好理解了,相当于html+js来编写界面。当然,这两种方法都可以配合css来编写。
    http://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm
 AwtSwingSWTJavaFx
优势1. 运行速度快1. 多平台1. 介于Awt和Swing之间1. 支持控件多
  2. 稳定 2. 默认控件漂亮
    3. 编写接口简洁
    4. 开发效率高
劣势1. 夸平台效果不好1. 运行效率低1. 介于Awt和Swing之间1. 运行效率一般
 2. 开发效率低2. 开发效率不高  
  3. 接口繁琐  
  4. 默认主题界面不美观  
  5. 精通耗时长  

2 JavaFx纯代码编写界面

2.1 JavaFx中的布局方式

总的布局方式和Tk比较类似,分为三类:

  1. 绝对布局
    在Tk里面,绝对布局是使用place来实现的,在JavaFx中使用 Pane 可以达到类似的效果,就是一旦确定了位置,变换窗口大小时,位置始终保持不变。所有控件通过层次叠加在一起的,在Tk中通过偏移值x和y来定位,在JavaFx中通过layoutX和layoutY来定位。
  2. 相对布局
    在Tk里面,相对布局使用是最多的,就是通过pack命令来管理和布局控件。在JavaFx中则通过 VBoxHBox 来实现pack的效果。HBox相当于,frame中的控件使用pack管理,加上参数-side left。VBox相当于,frame中的控件使用pack管理,加上参数-side top。Tk中pack的-expand选项,用 VBox.setVgrow(node, Priority.ALWAYS)HBox.setHgrow(node, Priority.ALWAYS) 来实现。
  3. 表格布局
    在Tk里面,表格布局是使用grid命令来进行的,在JavaFx中则使用 GridPaneTilePane 来实现。使用GridPane时,表格的大小是自适应的,使用TilePane时,表格大小是相等的。

2.2 JavaFx中的其他窗口容器

JavaFx中的窗口容器要比Tk中多很多,Tk中只有frame和labelframe两种。而JavaFx中的窗口容器则很多:

  1. 和frame比较类似的是 HBoxVBox
  2. BorderPane 比较有意思,它一开始就定义了5个区域,上中下,中间又分为左中右。可以把控件装到这几个位置去,用来创建经典的工具栏,左边展示树,中间操作区,右边显示属性,下面显示消息之类的布局非常方便。
  3. FlowPane 用来创建宽度或者高度可以调整的容器,有横向和纵向两个方向可以选择。用来布置较多的按钮或者图片之类的控件在里面,当调整宽度或者高度时,可以自动的增加或者减少每排或每列的控件数量。比如,原来宽度是500的时候,可以显示5个按钮,当宽度调整到300时,显示3个按钮,另外2个按钮自动换到下一排。
  4. StackPane 用来层叠多个控件,与基础的Pane比较类似,可以层叠,但不是通过x和y来定位,而是通过alignment来定位,可以自适应变化大小。
  5. ScrollPane 带滚动条的容器。
  6. AnchorPane 通过anchor的方向,left、right、top、bottom和center等方向来对控件进行布局。

2.3 JavaFx中的控件

2.4 自适应窗口的创建

3 JavaFx中的事件

3.1 OnShown

当我们在创建时需要获取控件的宽度和高度时,这时,由于控件并没有show,所以,它们的宽度和高度都是0。那么,我们怎么才能获取到正确的宽度和高度呢?

  • 调用show()函数,把窗口显示出来,但,这时程序的控件还在创建,会看到一个没有完成的界面,不太好。
  • 使用OnShown事件,就是当show()函数执行完之后,再执行callback里面的代码。
primaryStage.setOnShown(new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent e) {
            rect.setWidth(hbox.getWidth());
        }
    });

Date: 2017-04-11 22:06

Created: 2017-05-25 周四 10:24

Emacs 25.2.1 (Org mode 8.2.10)

Validate

转载于:https://www.cnblogs.com/yangwen0228/p/6831486.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值