美文网首页
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

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