JavaFX初探(1)
2017-03-29 17:28
183 查看
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(); } 7ce7 public static void appLaunch(String[] ARG){ launch(ARG); } }
这样,第一个fx的程序就做好了,点击运行,就会看到弹出一个写着hello world的窗口。
相关文章推荐
- JavaFx初探
- JavaFX初探(时间选择器)
- JavaFX初探(盘状图表)
- JavaFX初探与MediaPlayer(2)
- JavaFx初探
- javaFX初探(使用Image Ops API)
- tommy_guolin JavaFX 2 初探----Eclipse下运行Ensemble程序
- javaFX初探(部署)
- javafx之CSS初探
- javaFX初探(3D图形)
- javafX初探(多选框)
- JavaFx初探 fxml
- javaFX初探(使用画布 API)
- JavaFX初探(菜单)
- JavaFX初探与MediaPlayer(5)
- JavaFX 2 初探----Eclipse下运行Ensemble程序
- javafx之CSS初探
- JavaFx初探(颜色选择器)
- JavaFX初探与MediaPlayer(3)
- javafX初探(选择框)