各種FXMLファイルの作成
JavaFXGUIアプリのデザイン部分は手書きでも作成可能ですが、「JavaFX Scene Builder」を使えば一瞬にしてFXMLファイルを作成してくれます。
操作はいたって簡単、マウスで「ボタン」や「ラベル」などのコントロール部品をドラッグ
&ドロップするだけです。
以下の各FXMLファイルは「JavaFX Scene Builder」を使って作成したものです。
Root.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.SeparatorMenuItem?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.RootController">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="ファイル">
<items>
<MenuItem mnemonicParsing="false" onAction="#siteExit" text="閉じる" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="編集">
<items>
<MenuItem mnemonicParsing="false" text="検索" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="ヘルプ">
<items>
<MenuItem mnemonicParsing="false" onAction="#siteAbout" text="サイトについて" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" onAction="#siteVersion" text="バージョン情報" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.IndexController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="Index">
<font>
<Font size="24.0" />
</font>
</Label>
<Hyperlink alignment="BOTTOM_LEFT" layoutX="20.0" layoutY="190.0" onAction="#toCreate" prefHeight="45.0" prefWidth="155.0" text="Create" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink alignment="BOTTOM_LEFT" layoutX="20.0" layoutY="225.0" onAction="#toSearch" prefHeight="45.0" prefWidth="107.0" text="Search" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink alignment="BOTTOM_LEFT" layoutX="20.0" layoutY="270.0" onAction="#selectAllView" text="Show AllData" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.CreateController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="Create">
<font>
<Font size="24.0" />
</font>
</Label>
<Label fx:id="createSuccsess" layoutX="54.0" layoutY="124.0" prefHeight="27.0" prefWidth="259.0" textFill="#bc0000">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="54.0" layoutY="173.0" text="Name :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="51.0" layoutY="208.0" text="Address :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="52.0" layoutY="243.0" text="Memo :">
<font>
<Font size="18.0" />
</font>
</Label>
<TextField fx:id="nameCreate" layoutX="165.0" layoutY="174.0" prefHeight="25.0" prefWidth="236.0" promptText="name" />
<TextField fx:id="addressCreate" layoutX="165.0" layoutY="209.0" prefHeight="25.0" prefWidth="236.0" promptText="address" />
<TextArea fx:id="memoCreate" layoutX="165.0" layoutY="244.0" prefHeight="89.0" prefWidth="236.0" promptText="memo" />
<Hyperlink fx:id="linkSave" layoutX="51.0" layoutY="333.0" onAction="#linkSave" prefHeight="35.0" prefWidth="64.0" text="Save" textFill="#0f9d58">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkShowAll" layoutX="20.0" layoutY="435.0" onAction="#linkShowAll" text="Show AllData" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkIndex" layoutX="20.0" layoutY="473.0" onAction="#linkIndex" text="Index" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.SearchController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="Search">
<font>
<Font size="24.0" />
</font>
</Label>
<Label fx:id="searchError" layoutX="46.0" layoutY="137.0" prefHeight="25.0" prefWidth="221.0" textFill="#bc0000">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="198.0" prefHeight="27.0" prefWidth="72.0" text="Name :">
<font>
<Font size="18.0" />
</font>
</Label>
<TextField fx:id="searchName" layoutX="100.0" layoutY="199.0" prefHeight="25.0" prefWidth="207.0" />
<Button layoutX="314.0" layoutY="199.0" mnemonicParsing="false" onAction="#nameSearchAction" prefHeight="25.0" prefWidth="40.0" text="Go" />
<TableView fx:id="table" layoutX="20.0" layoutY="242.0" prefHeight="165.0" prefWidth="890.0" tableMenuButtonVisible="true" visible="false" AnchorPane.bottomAnchor="171.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="242.0">
<columns>
<TableColumn fx:id="idCol" prefWidth="44.0" style="-fx-font-size:16;" text="Id" />
<TableColumn fx:id="nameCol" prefWidth="100.0" style="-fx-font-size:16;" text="Name" />
<TableColumn fx:id="addressCol" prefWidth="220.0" style="-fx-font-size:16;" text="Address" />
<TableColumn fx:id="memoCol" prefWidth="207.0" style="-fx-font-size:16;" text="Memo" />
<TableColumn fx:id="created_atCol" prefWidth="110.0" style="-fx-font-size:16;" text="Created_at" />
<TableColumn fx:id="updated_atCol" prefWidth="110.0" style="-fx-font-size:16;" text="Updated_at" />
</columns>
</TableView>
<Hyperlink layoutX="18.0" layoutY="446.0" onAction="#toSelectAllView" text="Select AllView" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkIndex" layoutX="20.0" layoutY="483.0" onAction="#linkIndex" text="Index" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.SelectAllController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="Show AllData">
<font>
<Font size="24.0" />
</font>
</Label>
<!--TableView fx:id="table" layoutX="20.0" layoutY="202.0" prefHeight="144.0" prefWidth="890.0" tableMenuButtonVisible="true" AnchorPane.bottomAnchor="224.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="202.0"-->
<TableView fx:id="table" layoutX="20.0" layoutY="202.0" prefHeight="144.0" prefWidth="890.0" tableMenuButtonVisible="true" >
<columns>
<TableColumn fx:id="idCol" prefWidth="44.0" text="Id" style="-fx-font-size:16;" />
<TableColumn fx:id="nameCol" prefWidth="100.0" text="Name" style="-fx-font-size:16;" />
<TableColumn fx:id="addressCol" prefWidth="200.0" text="Address" style="-fx-font-size:16;" />
<TableColumn fx:id="memoCol" prefWidth="141.0" text="Memo" style="-fx-font-size:16;" />
<TableColumn fx:id="created_atCol" prefWidth="110.0" text="Created_at" style="-fx-font-size:16;" />
<TableColumn fx:id="updated_atCol" prefWidth="110.0" text="Updated_at" style="-fx-font-size:16;" />
</columns>
</TableView>
<Hyperlink fx:id="linkCreate" layoutX="20.0" layoutY="389.0" onAction="#linkCreate" text="Create" textFill="#3067b4">
<font>
<Font size="24.0" />
</font></Hyperlink>
<Hyperlink fx:id="linksearch" layoutX="20.0" layoutY="423.0" onAction="#linkSearch" prefHeight="45.0" prefWidth="94.0" text="Search" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkIndex" layoutX="20.0" layoutY="468.0" onAction="#linkIndex" text="Index" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.EditController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label fx:id="succsess" layoutX="62.0" layoutY="125.0" prefHeight="35.0" prefWidth="92.0" textFill="#bc0000">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="Edit">
<font>
<Font size="24.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="173.0" text="Id :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="208.0" text="Name :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="243.0" text="Address :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="278.0" text="Memo :">
<font>
<Font size="18.0" />
</font>
</Label>
<TextField fx:id="idEdit" editable="false" layoutX="165.0" layoutY="174.0" prefHeight="25.0" prefWidth="234.0" promptText="id" />
<TextField fx:id="nameEdit" editable="false" layoutX="165.0" layoutY="209.0" prefHeight="25.0" prefWidth="234.0" promptText="name" />
<TextField fx:id="addressEdit" layoutX="165.0" layoutY="244.0" prefHeight="25.0" prefWidth="234.0" promptText="address" />
<TextArea fx:id="memoEdit" layoutX="165.0" layoutY="279.0" prefHeight="75.0" prefWidth="234.0" promptText="memo" />
<Hyperlink fx:id="linkSave" layoutX="56.0" layoutY="345.0" onAction="#linkSave" text="Save" textFill="#0f9d58">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkShowAll" layoutX="39.0" layoutY="435.0" onAction="#linkShowAll" text="Show AllData" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkIndex" layoutX="44.0" layoutY="472.0" onAction="#linkIndex" text="Index" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="570.0" prefWidth="920.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.SeeController">
<children>
<Label layoutX="14.0" layoutY="14.0" prefHeight="83.0" prefWidth="678.0" text="JavaFXSampleFxmlApp">
<font>
<Font name="Arial" size="39.0" />
</font>
</Label>
<Label layoutX="28.0" layoutY="89.0" text="See">
<font>
<Font size="24.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="173.0" text="Id :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="208.0" text="Name :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="243.0" text="Address :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label layoutX="60.0" layoutY="278.0" text="Memo :">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="idlabel" layoutX="165.0" layoutY="174.0" prefHeight="25.0" prefWidth="234.0" text="Label">
<font>
<Font size="14.0" />
</font></Label>
<Label fx:id="namelabel" layoutX="165.0" layoutY="209.0" prefHeight="25.0" prefWidth="234.0" text="Label">
<font>
<Font size="14.0" />
</font></Label>
<TextField fx:id="addressTxtFld" layoutX="165.0" layoutY="244.0" prefHeight="25.0" prefWidth="234.0" promptText="address">
<font>
<Font size="14.0" />
</font></TextField>
<TextArea fx:id="memoTxtArea" editable="false" layoutX="165.0" layoutY="279.0" prefHeight="100.0" prefWidth="234.0" promptText="memo">
<font>
<Font size="14.0" />
</font></TextArea>
<Hyperlink fx:id="linkShowAll" layoutX="39.0" layoutY="435.0" onAction="#linkShowAll" text="Show AllData" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
<Hyperlink fx:id="linkIndex" layoutX="44.0" layoutY="472.0" onAction="#linkIndex" text="Index" textFill="#3067b4">
<font>
<Font size="24.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>