为什么用javafx?
- 写这个专题的目的,其实也是好玩,原来的熟悉的使用swing 来开发java中的gui程序,其实早就知道有javafx 这个东西的,一致没有时间的玩,最近有时间所以学习.这个专题会参考的其它的现有教程,结合自己对于swing的理解,可能有的地方说得不是太清楚,将就将就吧.
- swing与javafx的一篇水文章 https://www.zhihu.com/question/37236236
- 现有参考文章 http://www.yiibai.com/javafx/javafx_overview.html
- 所有代码 文章打包为pdf url[https://github.com/PEAKWEI/Javafx]
javafx是什么?
- 实际上就是开发gui程序 ,富互联网应用是那些提供与Web应用程序类似的功能,并可作为桌面应用程序体验的应用。与用户的正常网络应用程序相比,它们提供更好的视觉体验。这些应用程序可作为浏览器插件或作为虚拟机提供,用于将传统静态应用程序转换为更加增强,流畅,动画和引人入胜的应用程序。
- 现有前端技术也可以做gui程序,比如网易云音乐,网易有道词典等,性能还可以,不过我们这里主要说javafx. 其实你有兴趣还是可以去看看的网易的开源的拿到api系统
迅速步入开发过程
-
我们这里选择eclipse 喜欢的idea 可以用idea构建学习.它们都提供 了相应的构建插件
-
开发环境下载地址:
- 这里我给的是直接的ide下载环境,随着eclipse 迭代更新
http://downloads.efxclipse.bestsolution.at/downloads/nightly/sdk/
- 这里我给的是直接的ide下载环境,随着eclipse 迭代更新
-
如果你要手动集成开发环境可以看下面这篇文章
http://www.yiibai.com/javafx/install-efxclipse-into-eclipse.html -
JavaFX Scene Builder下载
JavaFX Scene Builder是一种可视布局工具,允许用户快速设计JavaFX应用程序用户界面,而无需编码。用户可以将UI组件拖放到工作区,修改其属性,应用样式表,并且它们正在创建的布局的FXML代码将在后台自动生成。它的结果是一个FXML文件,然后可以通过绑定到应用程序的逻辑与Java项目组合。
可以有效与eclipse 进行集成 ,这里选择 2..版本
地址: http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-1x-archive-2199384.html
-
如何集成到eclipse
http://www.yiibai.com/javafx/install-javafx-scene-builder-into-eclipse.html -
开发理论
上面的开发环境部署就这么多,下面大概介绍一下开发基础理论,javafx不再是单独的mvc 开发模式,虽然说本质上还是,如何你是一个了解安卓开发的,那么很快就会熟悉javafx开发 ,他们有很多相类似的地方,请看下面这张图
在VIEW上显示它
用户使用CONTROLLER
操作数据(更新,修改,删除,..),MODEL上的数据已更改。
在VIEW上显示MODEL的数据。
- 造 hello world
构建应用程序
- 从”File”菜单中选择”New Project”。
- 在”JavaFX”应用程序分类中,选择”JavaFX Application”,单击”Next”按钮。
- 将Project命名为”HelloWorld”并单击”Finish”按钮。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText(“Say \'Hello World\'”);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println(“Hello World!”);
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle(“Hello World!”);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
● JavaFX应用程序的主类需要继承自application.Application类。start()方法是所有JavaFX应用程序的入口。
● JavaFX应用程序将UI容器定义为舞台(Stage)与场景(Scene)。Stage类是JavaFX顶级容器。Scene类是所有内容的容器。例3-1中创建了Stage和Scene,然后为Scene设置了大小并使其可见。
● 在JavaFX中,Scene中的内容会以由图形节点(Node)构成的分层场景图(Scene Graph)来展现。在本例中,root节点是一个StackPane对象,它是一个可以调整大小的layout节点。这就意味着在用户改变stage大小时,root节点可以随scene的大小变化而变化。
● root节点包含一个带文本的按钮子节点,按钮上添加了一个事件处理器(Event Handler),它在点击按钮时会向控制台输出信息。
● 当JavaFX应用程序是通过JavaFX Packager工具打包时,main()方法就不是必需的的了,因为JavaFX Package工具会将JavaFX Launcher嵌入到JAR文件中。但是保留main()方法还是很有用的,这样你可以运行不带有JavaFX Launcher的JAR文件,例如在使用某些没有将JavaFX工具完全集成进去的IDE时。另外嵌入了JavaFX代码的Swing应用程序仍需要main()方法。
- 运行效果