美文网首页
fxml入门 2018.05.15

fxml入门 2018.05.15

作者: Elrond_Git | 来源:发表于2018-05-15 17:11 被阅读0次

JavaFX之FXML入门


IDE:Mac下的Eclipse

笔者是在有JavaFX开发小游戏的经验,以及对于HTML有一定了解的基础上学习的FXML。
在笔者最开始学习FXML的时候确实是一头雾水。
FXML,它是一种基于XML的语言,它提供了构建与代码应用程序逻辑分离的用户界面的结构。

下面是我自己的理解:

也就是说,原来在用JavaFX开发小游戏或者小动画的时候,我们需要使用各种各样的Pane啊以及可被其包括的结点(比如button)类。而FXML这种标记语言,可以单独书写并控制界面的结构
这一点有点类似HTML,用它大概写出网页的结构,然后用CSS来修饰。
FXML也可以用CSS来修饰!!


1.第一步,导入jar包

当然了,首先你得导入关于FXML的包,否则你就无法使用FXML。

打开你的eclipse,在Help中选择“Install new SoftWare
-->
Work With中选择网址,选择带你所用的版本号的网址(例如笔者使用的是Neon,则选择的网址是“Neon-XXXXXXXXXXXXXXXXXXXX”)
-->
然后在底下的搜索栏中输入“e(fx)clipse”,之后就选择下载了。
当然了,你可以参考JavaFX安装e(fx)clipse

首先明确思路:fxml文件确定布局,.java文件来作为loader,同时需要一个conroller类来处理fxml中结点的行为。
注:本文的三个代码样例没有直接关系

2.创建一个.java的loader

例如:
public void start(Stage stage) throws Exception {
       //这里就是链接fxml文件的地方
       Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"));
    
        Scene scene = new Scene(root, 300, 275);
    
        stage.setTitle("FXML Welcome");
        stage.setScene(scene);
        stage.show();
    }

3.创建一个fxml文件

//例子:一个fxml文件大概长下面这个样子,非常像html文件。一个pane套着其它的结点
<?import javafx.scene.control.Button?>  
<?import javafx.scene.control.Label?>  
<?import javafx.scene.control.ScrollPane?>  
<?import javafx.scene.control.TableColumn?>  
<?import javafx.scene.control.TableView?>  
<?import javafx.scene.control.TextField?>  
<?import javafx.scene.layout.Pane?>  
  
<Pane fx:id="pane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="480.0" prefWidth="774.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Stock_Net.Controller">  
   <children>  
      <Button layoutX="480.0" layoutY="28.0" mnemonicParsing="false" onAction="#btnAction" prefHeight="26.0" prefWidth="93.0" text="确定" />  
      <ScrollPane layoutY="89.0" prefHeight="167.0" prefWidth="775.0">  
         <content>  
            <TableView fx:id="table" prefHeight="390.0" prefWidth="900.0">  
              <columns>  
                  <TableColumn fx:id="nameCol" prefWidth="75.0" text="名称" />  
              </columns>  
            </TableView>  
         </content>  
      </ScrollPane> 
   </children>  
</Pane>  

4.创建一个Controller

Controller 是用来处理fxml文件中的一些结点的行为,比如按钮被按下啊之类的。@FXML注释用于标记非公开控制器成员字段和处理程序方法以供FXML标记使用,所以不能丢。

例如:
public class FXMLExampleController {
    @FXML private Text actiontarget;
    
    @FXML protected void handleSubmitButtonAction(ActionEvent event) {
        actiontarget.setText("Sign in button pressed");
    }

}

5.完整例子参考

用JavaFX创建一个用户登录框

PS:若不用fxml来创建界面,直接使用Pane等类在.java文件中创建界面的话,也可以用CSS来修饰界面。

public void start(Stage primaryStage) {
        Scene scene = new Scene(getPane(),900,556);
        
        //这段代码将.css文件链接到了这个场景里面,以此来对场景的布局进行改变
        scene.getStylesheets().add(getClass().getResource("Main UI.css").toExternalForm());
        
        //这一段代码是从谷歌字体库中获得特殊的字体,在html+css中也有相应的获取本地没有的字体的方法
        scene.getStylesheets().add("http://fonts.font.im/css?family=Shadows+Into+Light");
        primaryStage.setTitle("星座配对");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

相关文章

  • fxml入门 2018.05.15

    JavaFX之FXML入门 IDE:Mac下的Eclipse 笔者是在有JavaFX开发小游戏的经验,以及对于HT...

  • 6_TornadoFX_使用FXML编写UI,串口助手UI部分

    1_使用FXML编写UI 参考官方文档(汉化)新建FXML文件 这段fxml代码是它代码模式代码(可以不用管它) ...

  • JavaFX 笔记

    起始模板 Application controller fxml 文件中完成 fxml对controller的绑定...

  • TornadoFX编程指南,第10章,FXML和国际化

    译自《FXML and Internationalization》 FXML和国际化 TornadoFX的类型安全...

  • 【简笔画】单支树与星星之门

    2018.05.15

  • 2018.05.15

    母亲节过了 妈妈节日快乐 回国做饭给你和爸爸吃 你有没有想过,平行宇宙里的另一个你每天都能放下手机好好睡觉,醒来看...

  • 2018.05.15

    我还是想拥有更好一些的东西 从小到大都在学习将就 家庭也好感情也好 有点想结束了

  • 2018.05.15

    有一个很美的漩涡,你被它深深的吸引,不顾一切的想要跳进去,想去追随它。 但是你身边在乎你的人知道,这是个会让你粉身...

  • 2018.05.15

    384期乐观组007 姓名:于双艳 公司:白山市恒德路桥建设有限公司 【日精进打卡第5天】 【知~学习】 《六项精...

  • 2018.05.15

    我想写下日记,然后就安心睡觉。 今天很热,室内都有点闷热。大宝今天因为皮肤过敏缺席了幼儿园的艺术周之T台秀。觉得遗...

网友评论

      本文标题:fxml入门 2018.05.15

      本文链接:https://www.haomeiwen.com/subject/ecdydftx.html