本文讲述了Java fx教程——推荐几个JavaFX应用、框架!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
在于桌面应用开发这一块,相比于其他语言,不管是老牌的VB、Delphi、MFC,还是强势的Qt、Electron,JavaFX都显得受众少的多。
今天,给大家推荐几个JavaFX应用及框架(库),主要有:
oim-fx 即时通讯程序(仿QQ)
FXGL 游戏引擎框架
controlsfx UI拓展库
FormsFX 表单构建库
JMetro 主题切换库
oim-fx
OIM是一套即时通讯的聊天系统,而oimf-fx是OIM桌面端的客户端,OIM是一个多端即时通讯聊天系统,不仅有桌面客户端(JavaFX和Electron实现),还有WEB端、移动端。
OIM的作者是:onlyxiahui,他的Gitee主页为:
https://gitee.com/onlyxiahui
OIM 是我见过仿QQ最接近的即时通讯聊天软件了,不管是好友管理界面,还是聊天界面都是极为相似。
oim-fx 使用纯Java开发,里面的各种控件使用都是开发过程中很好的参考范例。
FXGL
FXGL 是一个JavaFX 游戏开发的框架,这个框架有两个版本,其中基于JDK1.8的版本已经不再维护,目前最新的是基于JDK11的版本,也就是Openjfx的版本。
FXGL 支持直接加载Tiled绘制地图的,也提供了很多基础的入门范例,对了解 FXGL 非常有用。
controlsfx
ControlsFX 是一个JavaFX UI库,提供很多UI控件的拓展,使用 ControlsFX 比起自己开发绘制一些控件要方便得多,比如:表单校验,网格布局,系统通知等等。
FormsFX
FormsFX 让JavaFX构建表单变得简单了很多,另外 FormsFX 不仅支持控件 Model 双向数据绑定(跟VUE一样),还支持各种表单校验。
以创建登录表单为例:
public class LoginDemoApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FormVO vo = new FormVO();
Form loginForm = Form.of(
Group.of(
Field.ofStringType(vo.usernameProperty())
.label("账号")
.required("账号不能为空!"),
Field.ofStringType(vo.passwordProperty())
.label("密码")
.required("密码不能为空!")
)
).title("登录");
FormRenderer formRenderer = new FormRenderer(loginForm);
formRenderer.setPrefWidth(450);
Pane root = new Pane();
root.getChildren().add(formRenderer);
primaryStage.setScene(new Scene(root, 450, 180));
primaryStage.setTitle("登录");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class FormVO {
private StringProperty username = new SimpleStringProperty("");
private StringProperty password = new SimpleStringProperty("");
public String getUsername() {
return username.get();
}
public StringProperty usernameProperty() {
return username;
}
public void setUsername(String username) {
this.username.set(username);
}
public String getPassword() {
return password.get();
}
public StringProperty passwordProperty() {
return password;
}
public void setPassword(String password) {
this.password.set(password);
}
}
JMetro
JMetro 是一个JavaFX主题库,可以使用它就可以简单的实现“深色”/“浅色”主题的切换,使用JMetro 改造一下上面登录表单程序。
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
// 1. 给VBox设置背景样式
root.getStyleClass().add(JMetroStyleClass.BACKGROUND);
root.getChildren().add(formRenderer);
// 2. 为场景设置主题
Scene scene = new Scene(root, 450, 200);
JMetro jMetro = new JMetro(Style.DARK);
jMetro.setScene(scene);
// 3. VBox添加一个按钮,用于切换主题
Button btn = new Button("切换主题");
btn.setOnMouseClicked(e -> {
Style s = jMetro.getStyle() == Style.DARK ? Style.LIGHT : Style.DARK;
jMetro.setStyle(s);
});
root.getChildren().add(btn);
其实,使用JMetro非常简单,只需要两个步骤:
给容器设置背景样式 JMetroStyleClass.BACKGROUND
给场景(Scene)设置默认主题
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!