使用Fxml作为界面的javafx
来源:互联网 发布:mac 无线鼠标 没反应 编辑:程序博客网 时间:2024/05/29 09:00
Fxml是一种以Xml的格式表示JavaFx界面对象的问价,Fxml文件中的每一个元素可以映射到JavaFx中的一个类,每个Fxml的元素的属性或者其子元素都可以为该对应JavaFxml类的属性。Fxm的应用到JavaFx上可以作为界面使用,其好处也是显而易见的,将界面从代码中分离出来。使整个程序的逻辑结构更加清晰。并且Orcale还开发出了SceneBuild 直接在界面上左图形拖拽来拼接界面,让界面的开发显得更加直观。现在我们用JavaFx的main+fxml+controller的结构来开发一个简单的记事本结构程序。
· 首先,我们先用SceneBuild将大致的界面画出来,如下图所示:额,应该先创建Fxml的文件的: 在eclipse中右键 -- new - - other -- JavaFx --JavaFx Fxml 写好文件名之后沿着一路点击next就可以了。
如图中所示:SceneBuild里的左上侧Library用来对组件的搜索,左下侧的hierarchy里可以看到界面中的组件的结构,右侧是对其大小,属性,连接的事件等的设定,这里没有将图片剪接出来。
然后在Main类里写好连接Fxml的方法,这里的一个要点就是和Fxml的连接。注意连接方法和假如fxml的文件和main文件不在同一个文件夹的情况,代码如下所示。
Parent root = FXMLLoader.load(getClass().getResource("NoteBook.fxml")); //与Fxml连接的方式:注:此时是在同一个包里的Scene scene = new Scene(root,550,600);primaryStage.setTitle("笔记本");primaryStage.setScene(scene);primaryStage.show();然后是controlller的写法:用@fxml作为注释来连上fxml的文件:
public class Control {@FXMLprivate AnchorPane layoutpane;@FXMLprivate TextArea filecontent;private File files;@FXMLprivate void onmenuOpen(ActionEvent event) throws Exception{FileChooser filechos = new FileChooser();files = filechos.showOpenDialog(layoutpane.getScene().getWindow());if (files !=null){filecontent.setText(readFiles(files));}}@FXMLprivate void onmenuSave(ActionEvent event) throws Exception{if(files==null){FileChooser filechos = new FileChooser();files = filechos.showSaveDialog(layoutpane.getScene().getWindow());}writeFiles(files, filecontent.getText());}@FXMLprivate void onmenuclose(ActionEvent event){System.exit(0);}@FXMLprivate void onmenudelet(ActionEvent event){filecontent.setText("");}@FXMLprivate void OonmenuAbout(ActionEvent event){JOptionPane.showMessageDialog(null, "JavaFX记事本是一款使用JavaFX开发的记事本。" ,"关于", JOptionPane.PLAIN_MESSAGE); } @FXML private void onContextSelectAll(ActionEvent event) { filecontent.selectAll(); }
由于写的是关于记事本的程序,所以主要用到的IO流和文件选择器之类的组件和方法。以后会对JavaFx的各个组件进行探究,到时后主要就是转载了,人家是官方毕竟,写的肯定要比我自己理解的好的多。还有,这里还有一个关于文本换行的写法,我感觉这里也是一个问题,稍微不注意,就会掉进大坑里
然后是将controller和Fxml连接起来。controller里装的都是Fxml里所需要的的各式各样的触发事件,没有controlller,Fxml只是一个界面而已。在scenebuild里的左下侧controller里找到controller class,将对应的controller选上,然后在scenebuild的选项里就可以看到有@fxml注释标记的属性,方法,事件了。将对应的fx:id 和onAction一 一选上之后保存,然后刷新Fxml(这里也是一个小点,更改完Fxml如果不刷新的话,还是会照着原来的fxml编译运行)。完成之后运行main方法,其对应的结果如下图所示:
- 使用Fxml作为界面的javafx
- JavaFX-FXML
- Javafx利用fxml的方式添加对话框
- Swing中嵌入Fxml方式的JavaFX
- javafx之FXML初探
- JavaFx初探 fxml
- JavaFX文档(11)掌握FXML——3 使用FXML来创建地址簿应用
- JavaFX文档(12)掌握FXML——4使用FXML来创建自定义控件
- javafx 之获取fxml的控制器(controller)
- JavaFX高级教程:JavaFX2.0的FXML语言
- JavaFX:Main,Controller,FXML之间的参数传递
- JavaFX文档(6)开始JavaFX之旅——4 使用FXML来创建用户界面
- javafx中的控制器和fxml
- Combo Box JavaFx with FXML
- Combo Box JavaFx with FXML
- javafx fxml之右键菜单
- javafx fxml 最简示例
- JavaFX入门(二):JavaFX和FXML
- POJ 2155 Matrix(二维树状数组)
- 第1章 STL概论与版本简介
- c++中编译时一些预定义关键词作用
- 2s内两次点击返回键退出程序
- 二叉树构造器
- 使用Fxml作为界面的javafx
- select、poll、epoll之间的区别总结
- Django(四)数据库
- javascript学习记录(三)-this对象的深入理解
- Tomcat源码解析(9)
- FTP连接时出现“227 Entering Passive Mode”的解决方法
- 51NOD 1138 连续整数的和
- 阿里巴巴淘票票专家分享:如何利用阿里云ARMS,搭建国际化在线售票的业务监控系统
- 295. Find Median from Data Stream