JavaFX初探(1)

JavaFX的初探(1)

恩,我是新手,写的如果有什么不合适的地方欢迎大家指出。这个是关于JavaFX相关的,大家都知道,JavaFX是甲骨文公司所主推的新一代GUI框架,做出的项目感觉上比swing更加灵活,因为他是支持CSS的,界面可以做的很漂亮,所以我看了一些网上的教程,准备试一试这个JavaFX。


环境配置

首先,JDK什么的就不必说了,支持JavaFX的jdk版本,感觉使用Java8会好些。

然后就是eclipse,这里说的eclipse是预装了E(FX)Clipse插件的Eclipse,我们可以这个地址找到他:点这里

然后,安装好jdk,解压eclipse,然后就可以正式编写代码了,要注意,jdk和eclipse的版本要对应,32位的JDK就要使用32位的eclipse,64位的就要对应64位的eclipse,否则会出现问题的。

等等,突然想到JavaFX还有一个SceneBuilder,似乎是用来拖拽控件,直接制作界面的工具,他可以生成一个后缀为fxml的文件,用来表达整个窗口上控件的布局。

不过在使用的过程中有一个问题,最终我还是选择在代码中完成整个的界面,这一点在后面会提到。

Hello World

恩,那么现在就说下最基本的一个JavaFX的写法,首先,打开eclipse,文件菜单,新建,工程,其他,这时会弹出一个新建工程的对话框,里面有JavaFX,展开他,里面就有JavaFX project。

如果Eclipse没有E(FX)Clipse的插件,那么就会比较麻烦一点,步骤应该是这样的,首先,新建一个普通的JavaProject,然后配置构建路径,找到library,里面有一个jre库,展开他,里面有Access Rule,对他双击进行编辑,第一个选项改为Access,第二个选项填写 星号/两个星号 (恩,原谅我使用汉字表达,Markdown没法用*)

那么,现在新建两个类,一个用来编写主窗体,一个包含主方法,用来启动。

mainStart

mainStart.java 启动类,包含mian方法,用来启动工程。

package swd.util;

import swdc.application.MainStg;

public class MainStart {

    public static void main(String[] args) {
        MainStg.appLaunch(args);
    }

}

MainStg

继承自JavaFX的Application类,他是JavaFX的主要用来表现的类,是主窗口。

那么JavaFX是怎么表达一个窗口的呢?我个人理解是这样的,JavaFX建立一个窗口需要三个最基础的组件,Stage(舞台),Scene(场景),以及根节点。

而Application类则是包含了一个stage窗口对象的JavaFX的启动类。

Stage

这是窗口的类,它是一个什么都没有的窗口,只有外部的系统窗口边框。

Scene

这个是场景图,可以用来加载外部的fxml文件形成的Parent对象作为根节点,也可以用一个布局面板进行初始化,布局面板,恩,主要是BorderPane,FlowPane,HBox,VBox,Pane等,接触过swing的对这些应该很熟悉。

这个Scene就可以看做是一个存放根节点的容器。

关于控件

FX中的控件,大部分都继承自Node类,有一些属性在这里先说下,和Swing的很不同,

  • 设置控件的位置,在swing中使用setBounds或者setLocation,在FX中应该使用setLayoutX,和setLayoutY。
  • 设置控件的大小,Swing也是setBounds,或者setSize,而在FX中,则是setPrefSize。
  • JavaFX中,宽度和高度,如果有布局决定,不自己设置,那么无法得到他们的数值,但是可以通过他们的property读取到,即WidthProprietary和HeightProperty。
  • 控件的添加,在swing中,直接使用add即可,但是在fx中,则需要getChildren.add,或者是getitem.add。
  • 还有很多,大家可以去查文档,英文看不明白可以用软件翻译。
package swd.application;

import javafx.scene.control.*;
import javafx.scene.layout.*;

public class MainStg{

    private Stage stg = new Stage();
    private Pane root = new Pane();
    private Scene sc = new Scene(root);

    private Label lbl = new Label("Hello World");

    public void start (primaryStage stage) throws Exception{
        stg.setWidth(400);
        stg.setHeight(400);
        stg.setScene(sc);

        lbl.setLayoutX(200);
        lbl.setLayoutY(200);
        root.getChildren().add(lbl);
        stg.show();
    }

    public static void appLaunch(String[] ARG){
        launch(ARG);
    }

}

这样,第一个fx的程序就做好了,点击运行,就会看到弹出一个写着hello world的窗口。

猜你喜欢

转载自blog.csdn.net/YunJian01/article/details/68067475
今日推荐