曾经不喜欢java是因为他做桌面应用门槛很高,而且很多系统底层的调用成本很高。当然语言不应该成为一个技术人的执念。
接下来说说springboot+javaFx开发桌面应用是一种什么样的体验
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yzj</groupId>
<artifactId>desctop-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>desctop-demo</name>
<description>desctop-demo</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<springboot-javafx.version>2.1.6</springboot-javafx.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-support</artifactId>
<version>${springboot-javafx.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-support</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
非常简单就引入两个包即可
.
|-- src
| `-- main
| |-- java
| | `-- com
| | `-- yzj
| | `-- demo
| | |-- controller
| | |-- service
| | | `-- impl
| | `-- view
| `-- resources
| |-- com
| | `-- yzj
| | `-- demo
| | `-- view
| `-- images
同样对界面与服务进行分层 分层之后就完全是我们的web三层结构mvc,就连开发的方式也是一模一样的。
注解:
@FXML
:声明注入一个控件
@FXMLView
:声明一个视图类
@FXMLController
: 生命一个视图控制类,基于事件机制
主舞台:
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport {
public static void main(String[] args) {
//自定义启动logo
CustomLoadingView customLoadingView = new CustomLoadingView();
launch(Main.class, MainView.class,customLoadingView, args);
}
@Override
public void start(Stage stage) throws Exception {
//启动时可以设置一些舞台属性,比如标题,最大化最小化窗口之类的
super.start(stage);
stage.setTitle("demo");
}
}
scene Builder
常用的布局组件
pane
: 空容器自定义
AnchorPane
:可锚点容器即可以在容器中自定义元素位置
GridPane
:表格式布局
Accordion
: 折叠式容器
BoderPane
: 上下左中右布局
SplitPane
: 横向切割,纵向切割两种
ScrollPane
:带滚动条的容器
当然如果你对这些组件都比较熟悉,使用fmxl来编辑,效果和速度上的体验还是远胜于拖拉拽的。
版权声明:本文为a807719447原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。