JavaFx初入门:从hello world做起

来源:互联网 发布:网络软文兼职 编辑:程序博客网 时间:2024/05/22 02:30

按照现在搜索情况,网络上关于JavaFx的教程少的一比,而且大部分还他喵的是英文版的,我现在也是只能边学边写感悟。如果有不全错误的地方还请大家见谅。

首先是对JavaFX的介绍,javaFx是一个非常强大的图形和多媒体处理工具包集合, 同时能够跨平台使用。通俗点来说就是JavaFx就是用来写客户端的,并且和Java的特性一样,一次编译到处乱窜。这里使用的是jdk1,8版本的。

Javafx有两种写法:一种是使用fxml文件,将事件和对场景描述分开,好处明显的自然而然:将逻辑功能和界面分开,使程序更加的清晰,但是最后连接的时候容易出问题。今天写的是另外一种方法:将界面和事件写到一块,虽然看起来很麻烦,但是不容易出问题。只是写完之后的代码麻烦到连你自己都不愿意看。

这里的javafx主要是继承了application这个类,是以Stage作为基石,即有舞台的意思,所有的功能都会在这个舞台上展现出来。现在先拿一串最简单的代码进行分析。

package application.fx17823;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 FxTest1 extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton button = new Button();               //创建按钮button.setText("Say'Hello World!!!'");//给按钮命名button.setOnAction(new EventHandler<ActionEvent>() {        //给按钮连接事件  注意写法(重点)@Overridepublic void handle(ActionEvent event) {// TODO Auto-generated method stubSystem.out.println("我就不说hello world!");}});StackPane root = new StackPane();//堆栈面板布局  注意stackPaneroot.getChildren().add(button);//把按钮加在面板上
Scene scene = new Scene(root,300,250);//设定大小primaryStage.setTitle("你好");//设定展示的场景舞台
primaryStage.setScene(scene);//设定场景的大小primaryStage.show();//舞台展示}public static void main(String[] args){launch(args);}}

JavaFx应用程序主要继承的是application.Application类,其中所对应的Start方法是所有JavaFx程序的入口。

Java Fx的应用程序将UI容器定义为舞台(Stage)和场景(Scene),stage是JavaFx顶级的容器,scene是所有内容的容器。所以最后scene还得放在stage里

在JavaFX中,Scene中的内容会以由图形节点(Node)构成的分层场景图(Scene Graph)来展现。在本例中,root节点是一个StackPane对象,它是一个可以调整大小的layout节点。这就意味着在用户改变stage大小时,root节点可以随scene的大小变化而变化。

当JavaFX应用程序是通过JavaFX Packager工具打包时,main()方法就不是必需的的了,因为JavaFX Package工具会将JavaFX Launcher嵌入到JAR文件中。但是保留main()方法还是很有用的,这样你可以运行不带有JavaFX Launcher的JAR文件,例如在使用某些没有将JavaFX工具完全集成进去的IDE时。另外嵌入了JavaFX代码的Swing应用程序仍需要main()方法。意思就是在eclipse里还得把launch给写上用来运行,如果是一切都包装好了,就不用写了。

root节点包含一个带文本的按钮子节点,按钮上添加了一个事件处理器(Event Handler),它在点击按钮时会向控制台输出信息。

运转效果如下图所示: