JavaFX桌面应用开发-HelloWorld
2021/6/1 20:24:15
本文主要是介绍JavaFX桌面应用开发-HelloWorld,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaFX桌面应用开发-HelloWorld
JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。
JavaFX比Swing好用很多,它允许开发使用FXML来设计和布局界面,跟Qt和Android的布局有点类似。
>> 更多JavaFX文章 >> JavaFX桌面应用开发系列文章
1. JavaFX UI 层级关系
JavaFX的UI分为几类:
- 窗口(stage)
- 场景(scene)
- 容器(container)
- 控件(controller)
它们之间的关系为:
stage: # 顶层 scene: # 放在窗口内 container: # 放在场景内(布局) controller: # 放在容器中
2. 创建JavaFX应用
JavaFX应用的创建可以跟普通的Java应用创建一样,即创建一个普通的maven项目即可,不过需要JavaFX的应用主程序需要继承Application这个类。
编写最简单的应用(空白窗口):
public class App extends Application { @Override public void start(Stage stage) { stage.setTitle("JavaFX Hello World"); stage.show(); } public static void main(String[] args) { launch(args); } }
效果图:
3. 添加自己的控件
JavaFX允许使用FXML来设计和布局界面,各模块也支持按MVC进行划分,即control(控制层)、 model(模型层)和view(视图层)。
下面按MVC这种模式,分别创建控制层、视图层、和模型层。
首先是控制层:AppUI。
控制层将view(视图层)的控件text通过bindBidirectional将其text属性跟model(模型层)的text属性绑定,这样就可以通过设置model的text来达到改变view的text属性的效果。
public class AppUI implements Initializable { public Label text; private AppModel model = new AppModel(); @Override public void initialize(URL location, ResourceBundle resources) { text.textProperty().bindBidirectional(model.textProperty()); model.setText("Hello JavaFX."); } }
接着是模型层:AppModel
模型层主要的作用是数据载体,在控制层将视图层的控件跟模型层的属性绑定,以达到改变模型就改变视图。(这一点跟Vue有点类似)。
public class AppModel { private StringProperty text = new SimpleStringProperty(); public String getText() { return text.get(); } public StringProperty textProperty() { return text; } public void setText(String text) { this.text.set(text); } }
然后是视图层:AppUI.fxml
视频层采用JavaFX的FXML来布局界面,这里简单的使用BorderPane作为容器,里面只放了一个Label控件。
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <?import javafx.scene.layout.BorderPane?> <BorderPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.itqn.gui.javafx.wx.ui.AppUI"> <center> <Label fx:id="text" BorderPane.alignment="CENTER" /> </center> </BorderPane>
最后,根据层级关系组织JavaFX应用
控件(Label)放在容器(BorderPane)里面,容器放在场景里面,场景放在窗口里面即可。
public class App extends Application { @Override public void start(Stage stage) throws Exception { Parent root = AppUI.load(); Scene scene = new Scene(root); stage.setTitle("JavaFX Hello World"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
这样一个最简单的完整JavaFX就开发完了。
这里需要注意的是: ,因为fxml跟java代码放在同一个包下面,所以需要在maven的pom.xml配置resources。
<build> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.fxml</include> </includes> </resource> </resources> </build> 摘自:https://www.cnblogs.com/itqn/p/13379866.html
这篇关于JavaFX桌面应用开发-HelloWorld的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用