如果您对文章有提议, 建议或者任何想表达的, 欢迎在下方评论区留言! 不断交流才是进步的捷径!


上一章我们创建了一个JavaFX项目, 并且成功运行并展示了我们的第一个应用窗口.  本章我们将使用JavaFX SceneBuilder来自定义以及"美化"我们的界面.


在这里, 先进行一个小步骤, 编辑我们的sample.fxml文件

javafx中的ComboBox的使用 javafx anchorpane_java

将标签改为AnchorPane, 删掉fx:controller="***"后面的属性(如果你已经是AnchorPane, 就不用变动)

javafx中的ComboBox的使用 javafx anchorpane_javafx_02

<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:controller="sample.Controller"
            xmlns:fx="http://javafx.com/fxml">
</AnchorPane>

这样做的原因: 


GridPane和AnchorPane都是布局控件, 但是笔者使用后觉得, AnchorPane更为方便, 更加自由. 若有心探索其他布局, 可以自己进行尝试. 


用JavaFX Scene Builder画出第一个控件

去项目目录, 寻找src/sample/sample.fxml文件

javafx中的ComboBox的使用 javafx anchorpane_桌面应用_03

用JavaFX Scene Builder打开它

javafx中的ComboBox的使用 javafx anchorpane_JavaFX_04

如果步骤是按照上面的步骤走的话, 应该是这样:

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_05

可以看到, 中间的布局空间的大小为0, 我们只需拖动它到我们想要的大小, (应当是先往左右拉, 再往上下拉), 拉完之后的大小就是我们最终的界面大小, 比如笔者喜欢"高一点":

javafx中的ComboBox的使用 javafx anchorpane_桌面应用_06


在这里要注意一下, 我们要多进行一个步骤, 才能在最后正常显示. 点击一下AnchorPane(我们中间的白色部分), 

看右边的布局信息

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_07

红色框内的, 是它的长和宽, 我们也需要更改java代码中的窗口大小.

打开Main.java, 我们之前介绍过的两个参数, 修改它们, 使他们和你的布局长宽一致.

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_08

修改完成后, 回到JavaFX Scene Builder, 让我们来添加一个按钮:

在左边找到组件"Button"

javafx中的ComboBox的使用 javafx anchorpane_JavaFX_09

把它拖动到中间

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_10

拖动按钮到布局内后, 点击它, 看右边那一栏:

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_11

其中, "属性"标签下存储的是按钮的"按钮显示文字", "字体", "颜色"等等相关属性, 我们可以在这里自定义;

我把它做了一些改动后的样子:

javafx中的ComboBox的使用 javafx anchorpane_java_12


下面, 我们将介绍非常重要的部分, 组件触发事件

继续看右边那一栏, 点击"代码":

javafx中的ComboBox的使用 javafx anchorpane_java_13

我们会看到很多文本框, 这里我们着重看fx:id以及On Action

fx:id              给这个组件起一个唯一id (必填)

On Action     进行动作时触发的方法名

要想使这个按钮"活起来", 这两个是需要填写的   (On Action 与其下面的是同一类, 都属于触发条件调用相应方法, 有别的触发条件也可以)


让我们填写相应的数据, 如:

javafx中的ComboBox的使用 javafx anchorpane_JavaFX_14

我给这个按钮的fx:id 赋值为btn1, On Action调用的方法名为onclick

完成这些后, 保存我们刚才的修改 (通用快捷键Ctrl+S)


接下来, 是该隆重请出我们的Controller类了!

javafx中的ComboBox的使用 javafx anchorpane_java_15

我们可以看到, Controller里空空如也, 让我们往里面填一些东西:

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_16

可以看到, 我向里面加了一个类型为Button, 注解为@FXML, 名为btn1 的变量 (注意导入的包, 别导错了)

其中: @FXML用于将变量与同名控件绑定, 变量名是之前的fx:id, 变量类型控件的类型, 多用于获取控件状态.


我们暂时不需要获取按钮的状态, 我们继续写:

javafx中的ComboBox的使用 javafx anchorpane_java_17

可以看到我又写了一个方法, 名为onclick. 没错, 这就是我们刚才写在On Action里的方法名

运行我们的Main主类, 点击按钮并观察控制台.

javafx中的ComboBox的使用 javafx anchorpane_桌面应用_18

是不是很神奇? 你也可以多点击几次按钮, 控制台就会打印相应次数的语句.


接下来, 我们要展示获取组件的值(非常重要), 我们先往界面上添加一个文本框(在左侧找到TextField):

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_19

给它的fx:id 起名为textField, 保存我们刚才的修改 (通用快捷键Ctrl+S, 接下来就不再提醒了, 记得没事就保存)

回到Controller, 我们再把这个组件绑定上(注意导包, 为

import javafx.scene.control

):

javafx中的ComboBox的使用 javafx anchorpane_java_20

现在, 我们想实现这样的功能: 当点击按钮时, 打印文本框内的值, So Easy!

我们找到刚才的"onclick"方法, 注释掉刚才的打印语句, 增加:

javafx中的ComboBox的使用 javafx anchorpane_桌面应用_21

其中, textField.getText() 方法就是获取我们所绑定文本框的内容, 让我们把它打印到控制台上.

运行Main, 在输入框中输入:"今天天气真好":

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_22

让我们点击按钮, 可以看到控制台打印出了我们刚才输入的内容.

javafx中的ComboBox的使用 javafx anchorpane_javafx中的ComboBox的使用_23


至此, 你已经完整的走了一遍JavaFX的流程, 相信聪明的你一定可以举一反三了, 下一篇, 我们将会了解JavaMail, 

并使用它来发送一封邮件!


下一章-->





第一个java桌面应用, javafx, 邮件客户端, java开发邮件客户端