当前位置: 代码网 > it编程>编程语言>Java > JAVA项目swing转javafx语法规则以及示例代码

JAVA项目swing转javafx语法规则以及示例代码

2025年12月04日 Java 我要评论
java swing → javafx 项目迁移时,语法/api 的转换规则几乎是“一对一可查表”的。下面把你 90% 会碰到的转换直接列成表格,照着改就行,基本不需

java swing → javafx 项目迁移时,语法/api 的转换规则几乎是“一对一可查表”的。下面把你 90% 会碰到的转换直接列成表格,照着改就行,基本不需要动逻辑。

swing(旧)javafx(新)转换规则 + 备注
主类继承
extends jframeextends application必须重写 start(stage primarystage)
窗口创建
new jframe(“标题”)new stage() + primarystage.settitle(“标题”)javafx 用 stage 代替 jframe
frame.setdefaultcloseoperation(exit_on_close)primarystage.setoncloserequest(e -> system.exit(0))或直接不写,默认关闭就是退出
布局管理器
borderlayoutborderpanetop / bottom / left / right / center
flowlayoutflowpane / hbox / vboxhbox 横排,vbox 竖排
gridlayoutgridpane最常用,行列灵活
boxlayoutvbox / hbox基本一样
cardlayoutstackpane + tabpane / togglebutton + visibility推荐用 tabpane 或自己用 setvisible() 控制
常用控件
jbuttonbuttonapi 几乎一样
jlabellabel一样
jtextfieldtextfield一样
jpasswordfieldpasswordfield一样
jtextareatextarea一样
jcheckboxcheckbox一样
jradiobuttonradiobutton + togglegroup必须加 togglegroup 实现单选
jcomboboxcombobox一样,但泛型更强
jlistlistview一样
jtabletableview + tablecolumn最大差异!需要定义实体类 + propertyvaluefactory
jscrollpanescrollpane用法一样
jmenubar / jmenu / jmenuitemmenubar / menu / menuitem基本一样
jfilechooserfilechooserapi 略有不同,但功能一致
jdialogstage + modality模态对话框用 new stage(stagestyle.utility) + initmodality(modality.application_modal)
事件监听
button.addactionlistener(e -> …)button.setonaction(e -> …)完全一致,只是方法名改了
线程安全(更新 ui)
swingutilities.invokelater(() -> …)platform.runlater(() -> …)必须记住!javafx 所有 ui 操作都要在 javafx 线程里
启动方式
public static void main(string[] args) { new myframe().setvisible(true); }public static void main(string[] args) { application.launch(myapp.class, args); }必须调用 application.launch(),不能自己 new
图标
frame.seticonimage(img)primarystage.geticons().add(new image(“icon.png”))路径可以是 classpath 里的资源
字体、颜色、边距
基本都一样但 javafx 更推荐用 css-fx-font-size: 14px; -fx-text-fill: red; 写在 style 或外部 css 文件
显示窗口
frame.setvisible(true)primarystage.show()注意是 show(),不是 setvisible

最常用的“一行换一行”速查表(直接全局替换)

你原来的 swing 代码替换成 javafx 代码(复制粘贴)
new jframe()primarystage
settitle(“xxx”)primarystage.settitle(“xxx”)
setsize(800,600)primarystage.setwidth(800); primarystage.setheight(600)
setlocationrelativeto(null)primarystage.centeronscreen()
setdefaultcloseoperation(exit_on_close)// javafx 默认就是退出
add(button)pane.getchildren().add(button) (根据具体布局)
setlayout(new borderlayout())root = new borderpane()
jpanelpane / region / vbox / hbox
pack()// javafx 一般不用,布局自动计算

实际转换示例(jframe → javafx)

// swing 旧代码
public class mainframe extends jframe {
    public mainframe() {
        settitle("学生管理系统");
        setsize(900, 600);
        setdefaultcloseoperation(exit_on_close);
        add(new mainpanel());
        setlocationrelativeto(null);
        setvisible(true);
    }
    public static void main(string[] args) {
        new mainframe();
    }
}
// javafx 新代码(只需改这几行)
public class mainapp extends application {
    @override
    public void start(stage primarystage) {
        primarystage.settitle("学生管理系统");
        primarystage.setwidth(900);
        primarystage.setheight(600);
        primarystage.setscene(new scene(new mainpanel()));
        primarystage.centeronscreen();
        primarystage.show();
    }
    public static void main(string[] args) {
        launch(args);  // 必须这一行
    }
}

迁移建议顺序(最快最不踩坑)

  1. 先把 jframe 主类改成继承 application,实现 start(stage)
  2. 把所有 jpanel 改成 borderpane / vbox(推荐从上到下用 vbox 搭积木式布局)
  3. 全局替换 add(getchildren().add(
  4. 所有事件监听 addactionlistenersetonaction
  5. 所有 swingutilities.invokelaterplatform.runlater
  6. 最后处理 jtabletableview(最麻烦的一步,建议最后干)

总结 

到此这篇关于java项目swing转javafx语法规则以及示例代码的文章就介绍到这了,更多相关java swing转javafx语法规则内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com