﻿{"id":1228,"date":"2013-08-06T23:03:19","date_gmt":"2013-08-06T14:03:19","guid":{"rendered":"http:\/\/yucchi.jp\/blog\/?p=1228"},"modified":"2013-08-06T23:12:55","modified_gmt":"2013-08-06T14:12:55","slug":"javafx-%e3%81%a7%e3%81%95%e3%82%89%e3%81%ab%e8%b6%b3%e3%81%97%e7%ae%97%e3%81%ae%e3%81%8a%e5%8b%89%e5%bc%b7","status":"publish","type":"post","link":"http:\/\/yucchi.jp\/blog\/?p=1228","title":{"rendered":"JavaFX \u3067\u3055\u3089\u306b\u8db3\u3057\u7b97\u306e\u304a\u52c9\u5f37"},"content":{"rendered":"<p>\u524d\u56de\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5229\u7528\u3057\u3066\u4eca\u56de\u3082 JavaFX \u3067\u8db3\u3057\u7b97\u30a2\u30d7\u30ea\u306b\u624b\u3092\u52a0\u3048\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u4eca\u56de\u8ffd\u52a0\u3059\u308b\u6a5f\u80fd\u306f \u30a2\u30d7\u30ea\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u306e\u5909\u66f4\u3092\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n<p>\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u5229\u7528\u3057\u3066 BGM \u3092\u6d41\u305b\u308b\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n<p>\u554f\u984c\u306e\u96e3\u6613\u5ea6\u3092\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u3092\u6392\u4ed6\u5236\u5fa1\u3057\u3066\u53ef\u80fd\u306b\u3059\u308b\u3002<\/p>\n<p>\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n<p>\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n<p>\u7d50\u5c40\u3001\u3053\u3093\u306a\u611f\u3058\u306b\u3067\u304d\u3042\u304c\u308a\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/11.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"1\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"1\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/1_thumb1.jpg\" width=\"421\" height=\"228\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/21.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"2\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"2\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/2_thumb1.jpg\" width=\"353\" height=\"215\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/3.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"3\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"3\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/3_thumb.jpg\" width=\"393\" height=\"228\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/4.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"4\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"4\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/4_thumb.jpg\" width=\"353\" height=\"219\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306f\u79c1\u306e\u5b9f\u529b\u3067\u306f\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092\u6b63\u3057\u304f\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304b\u3063\u305f\u306e\u3067\u8ae6\u3081\u307e\u3057\u305f\u3002(&gt;_&lt;\uff61)<\/p>\n<p>\u7d20\u76f4\u306b\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u3092\u4f7f\u3048\u3070\u3088\u304b\u3063\u305f\u304b\u3082\u30fb\u30fb\u30fb<\/p>\n<p>\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306e\u6392\u4ed6\u5236\u5fa1\u306e\u30a4\u30d9\u30f3\u30c8\u51e6\u7406\u306f\u304b\u306a\u308a\u602a\u3057\u3044\u3053\u3068\u3092\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u6211\u306a\u304c\u3089\u3053\u308c\u306f\u7121\u3044\u3060\u308d\u3046\u3068\u601d\u3044\u306a\u304c\u3089\u4ed6\u306b\u826f\u3044\u65b9\u6cd5\u3092\u77e5\u3089\u306a\u3044\u306e\u3067\u52d5\u3051\u3070\u3044\u3044\u3084\u3063\u3066\u306e\u308a\u3067\u3084\u3063\u3066\u307e\u3059\u3002\uff08\u30aa\u30d2<\/p>\n<p>\u3060\u304b\u3089\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u304c\u30fb\u30fb\u30fb\u30fb\u30fb\u3000\u3068\u3069\u306e\u3064\u307e\u308a\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u3092\u4f7f\u304a\u3046\u3001\u4eca\u5ea6\u304b\u3089\u306f\u3002<\/p>\n<p>\u3044\u3061\u304a\u3046\u3001\u306a\u3093\u3068\u304b\u52d5\u3044\u305f\u306e\u3067\u826f\u3057\u3068\u3057\u307e\u3057\u305f\u3002(^_^;)<\/p>\n<p>\u305d\u308c\u3067\u306f\u305d\u3093\u306a\u3053\u3093\u306a\u3067\u3044\u3044\u52a0\u6e1b\u3067\u3059\u304c\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u6652\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre title=\"Calc2.java\" mark=\"19\">\r\npackage jp.yucchi.calc;\r\n\r\nimport javafx.application.Application;\r\nimport javafx.fxml.FXMLLoader;\r\nimport javafx.scene.Parent;\r\nimport javafx.scene.Scene;\r\nimport javafx.stage.Stage;\r\n\r\npublic class Calc2 extends Application {\r\n\r\n    @Override\r\n    public void start(Stage stage) throws Exception {\r\n        Parent root = FXMLLoader.load(getClass().getResource(\"CalcForm.fxml\"));\r\n\r\n        Scene scene = new Scene(root);\r\n\r\n        stage.setTitle(\"\u8db3\u3057\u7b97\u3067\u304d\u307e\u3059\u304b\uff1f\");\r\n        stage.setScene(scene);\r\n        stage.setResizable(false);\r\n        stage.show();\r\n    }\r\n\r\n    public static void main(String[] args) {\r\n        launch(args);\r\n    }\r\n\r\n}\r\n<\/pre>\n<pre title=\"CalcFormController.java\" mark=\"163-178\">\r\npackage jp.yucchi.calc;\r\n\r\nimport java.awt.Toolkit;\r\nimport static java.lang.Integer.parseInt;\r\nimport java.net.URL;\r\nimport java.util.Random;\r\nimport java.util.ResourceBundle;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport javafx.beans.value.ChangeListener;\r\nimport javafx.beans.value.ObservableValue;\r\nimport javafx.event.ActionEvent;\r\nimport javafx.fxml.FXML;\r\nimport javafx.fxml.Initializable;\r\nimport javafx.scene.control.CheckBox;\r\nimport javafx.scene.control.Label;\r\nimport javafx.scene.control.TextField;\r\nimport javafx.scene.control.ToggleButton;\r\nimport javafx.scene.control.ToggleGroup;\r\nimport javafx.scene.media.Media;\r\nimport javafx.scene.media.MediaPlayer;\r\n\r\npublic class CalcFormController implements Initializable {\r\n\r\n    private int x;\r\n    private int y;\r\n    private int resultAnswer;\r\n    private int modeNumber = 99;\r\n\r\n    Random rnd = new Random();\r\n\r\n    private final Media start = new Media(getClass().getResource(\"start.mp3\").toExternalForm());\r\n    private final Media ok = new Media(getClass().getResource(\"ok.mp3\").toExternalForm());\r\n    private final Media ng = new Media(getClass().getResource(\"ng.mp3\").toExternalForm());\r\n    private final Media bgm = new Media(getClass().getResource(\"bgm.mp3\").toExternalForm());\r\n    private final Media m_easy = new Media(getClass().getResource(\"easy.mp3\").toExternalForm());\r\n    private final Media m_normal = new Media(getClass().getResource(\"normal.mp3\").toExternalForm());\r\n    private final Media m_hard = new Media(getClass().getResource(\"hard.mp3\").toExternalForm());\r\n\r\n    @FXML\r\n    private Label questionLabel;\r\n\r\n    @FXML\r\n    private TextField answerField;\r\n\r\n    @FXML\r\n    private Label resultLabel;\r\n\r\n    @FXML\r\n    CheckBox bgmCheck;\r\n\r\n    @FXML\r\n    ToggleGroup mode;\r\n\r\n    @FXML\r\n    ToggleButton easy;\r\n\r\n    @FXML\r\n    ToggleButton normal;\r\n\r\n    @FXML\r\n    ToggleButton hard;\r\n\r\n    @FXML\r\n    public void handleAnswer(ActionEvent event) {\r\n\r\n        Pattern intPattern = Pattern.compile(\"[0-9]+\");\r\n        Matcher match = intPattern.matcher(answerField.getText());\r\n\r\n        if (match.matches() != false || answerField.getText().isEmpty()) {\r\n        } else {\r\n            resultLabel.setText(\"\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u306d\uff01\");\r\n            Toolkit.getDefaultToolkit().beep();\r\n        }\r\n        if (answerField.getText().isEmpty()) {\r\n            resultLabel.setText(\"\u7b54\u3048\u3092\u5165\u529b\u3057\u3066\u306d\uff01\");\r\n            Toolkit.getDefaultToolkit().beep();\r\n        } else {\r\n            boolean result = calc(answerField.getText());\r\n            if (result) {\r\n                resultLabel.setText(\"\u6b63\u89e3\uff01\");\r\n                MediaPlayer mp_ok = new MediaPlayer(ok);\r\n                mp_ok.play();\r\n            } else {\r\n                resultLabel.setText(\"\u4e0d\u6b63\u89e3\uff01\");\r\n                MediaPlayer mp_ng = new MediaPlayer(ng);\r\n                mp_ng.play();\r\n            }\r\n        }\r\n    }\r\n\r\n    @FXML\r\n    public void handleClear(ActionEvent event) {\r\n        answerField.clear();\r\n        resultLabel.setText(null);\r\n        x = rnd.nextInt(modeNumber) + 1;\r\n        y = rnd.nextInt(modeNumber) + 1;\r\n        resultAnswer = x + y;\r\n        questionLabel.setText(\" \" + x + \" + \" + y + \" = \");\r\n    }\r\n\r\n    @FXML\r\n    public void handleEasy(ActionEvent event) {\r\n        if (easy.isSelected()) {\r\n            modeNumber = 99;\r\n            answerField.clear();\r\n            resultLabel.setText(null);\r\n            x = rnd.nextInt(modeNumber) + 1;\r\n            y = rnd.nextInt(modeNumber) + 1;\r\n            resultAnswer = x + y;\r\n            questionLabel.setText(\" \" + x + \" + \" + y + \" = \");\r\n            MediaPlayer mp_easy = new MediaPlayer(m_easy);\r\n            mp_easy.play();\r\n        } else {\r\n            easy.setSelected(true);\r\n        }\r\n    }\r\n\r\n    @FXML\r\n    public void handleNormal(ActionEvent event) {\r\n        if (normal.isSelected()) {\r\n            modeNumber = 999;\r\n            answerField.clear();\r\n            resultLabel.setText(null);\r\n            x = rnd.nextInt(modeNumber) + 1;\r\n            y = rnd.nextInt(modeNumber) + 1;\r\n            resultAnswer = x + y;\r\n            questionLabel.setText(\" \" + x + \" + \" + y + \" = \");\r\n            MediaPlayer mp_normal = new MediaPlayer(m_normal);\r\n            mp_normal.play();\r\n        } else {\r\n            normal.setSelected(true);\r\n        }\r\n    }\r\n\r\n    @FXML\r\n    public void handleHard(ActionEvent event) {\r\n        if (hard.isSelected()) {\r\n            modeNumber = 99999;\r\n            answerField.clear();\r\n            resultLabel.setText(null);\r\n            x = rnd.nextInt(modeNumber) + 1;\r\n            y = rnd.nextInt(modeNumber) + 1;\r\n            resultAnswer = x + y;\r\n            questionLabel.setText(\" \" + x + \" + \" + y + \" = \");\r\n            MediaPlayer mp_hard = new MediaPlayer(m_hard);\r\n            mp_hard.play();\r\n        } else {\r\n            hard.setSelected(true);\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public void initialize(URL url, ResourceBundle rb) {\r\n\r\n        x = rnd.nextInt(modeNumber) + 1;\r\n        y = rnd.nextInt(modeNumber) + 1;\r\n        resultAnswer = x + y;\r\n        questionLabel.setText(\" \" + x + \" + \" + y + \" = \");\r\n        MediaPlayer mp_start = new MediaPlayer(start);\r\n        mp_start.play();\r\n\r\n        bgmCheck.selectedProperty().addListener(new ChangeListener<Boolean>() {\r\n            MediaPlayer mp_bgm;\r\n\r\n            @Override\r\n            public void changed(ObservableValue<? extends Boolean> ov, Boolean oldVal, Boolean newVal) {\r\n                if (newVal.booleanValue()) {\r\n                    mp_bgm = new MediaPlayer(bgm);\r\n                    mp_bgm.setVolume(0.07);\r\n                    mp_bgm.play();\r\n                    mp_bgm.setCycleCount(MediaPlayer.INDEFINITE);\r\n                } else {\r\n                    mp_bgm.stop();\r\n                }\r\n            }\r\n\r\n        });\r\n\r\n    }\r\n\r\n    private boolean calc(String ans) {\r\n        int answer = parseInt(ans);\r\n        return answer == resultAnswer;\r\n    }\r\n\r\n}\r\n\r\n<\/pre>\n<pre title=\"CalcForm.fxml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n\r\n<?import java.lang.*?>\r\n<?import java.util.*?>\r\n<?import javafx.geometry.*?>\r\n<?import javafx.scene.*?>\r\n<?import javafx.scene.control.*?>\r\n<?import javafx.scene.layout.*?>\r\n<?import javafx.scene.text.*?>\r\n\r\n<AnchorPane id=\"AnchorPane\" maxHeight=\"-1.0\" maxWidth=\"-1.0\" minHeight=\"160.0\" minWidth=\"320.0\" \r\n            prefHeight=\"160.0\" prefWidth=\"320.0\" xmlns:fx=\"http:\/\/javafx.com\/fxml\/1\" xmlns=\"http:\/\/javafx.com\/javafx\/2.2\" \r\n            fx:controller=\"jp.yucchi.calc.CalcFormController\">\r\n  <children>\r\n    <VBox prefHeight=\"-1.0\" prefWidth=\"-1.0\" AnchorPane.bottomAnchor=\"12.0\" AnchorPane.leftAnchor=\"12.0\" \r\n          AnchorPane.rightAnchor=\"12.0\" AnchorPane.topAnchor=\"12.0\">\r\n      <children>\r\n        <AnchorPane prefHeight=\"47.0\" prefWidth=\"-1.0\">\r\n          <children>\r\n            <Label fx:id=\"questionLabel\" prefHeight=\"30.0\" prefWidth=\"184.0\" text=\"\" \r\n                   AnchorPane.leftAnchor=\"5.0\" AnchorPane.topAnchor=\"10.0\">\r\n              <font>\r\n                <Font size=\"16.0\" fx:id=\"x1\" \/>\r\n              <\/font>\r\n            <\/Label>\r\n            <TextField fx:id=\"answerField\" alignment=\"CENTER_RIGHT\" onAction=\"#handleAnswer\" prefHeight=\"30.0\" prefWidth=\"95.0\" \r\n                       text=\"\" AnchorPane.rightAnchor=\"0.0\" AnchorPane.topAnchor=\"10.0\">\r\n              <tooltip>\r\n                <Tooltip text=\"\u534a\u89d2 0 ~ 9 \u3067\u5165\u529b\u3057\u3066\u306d\uff01\" \/>\r\n              <\/tooltip>\r\n            <\/TextField>\r\n          <\/children>\r\n        <\/AnchorPane>\r\n        <HBox alignment=\"CENTER_RIGHT\" prefHeight=\"47.0\" prefWidth=\"296.0\">\r\n          <children>\r\n            <ToggleButton fx:id=\"easy\" mnemonicParsing=\"false\" onAction=\"#handleEasy\" prefWidth=\"65.0\" \r\n                          selected=\"true\" text=\"Easy\" wrapText=\"false\">\r\n              <toggleGroup>\r\n                <ToggleGroup fx:id=\"mode\" \/>\r\n              <\/toggleGroup>\r\n              <tooltip>\r\n                <Tooltip text=\"2\u6841\u4ee5\u5185\u306e\u8db3\u3057\u7b97\" \/>\r\n              <\/tooltip>\r\n              <HBox.margin>\r\n                <Insets \/>\r\n              <\/HBox.margin>\r\n            <\/ToggleButton>\r\n            <ToggleButton fx:id=\"normal\" mnemonicParsing=\"false\" onAction=\"#handleNormal\" \r\n                          prefWidth=\"65.0\" text=\"Normal\" toggleGroup=\"$mode\">\r\n              <tooltip>\r\n                <Tooltip text=\"3\u6841\u4ee5\u5185\u306e\u8db3\u3057\u7b97\" \/>\r\n              <\/tooltip>\r\n              <HBox.margin>\r\n                <Insets left=\"5.0\" fx:id=\"x2\" \/>\r\n              <\/HBox.margin>\r\n            <\/ToggleButton>\r\n            <ToggleButton fx:id=\"hard\" mnemonicParsing=\"false\" onAction=\"#handleHard\" prefWidth=\"65.0\" selected=\"false\" \r\n                          text=\"Hard\" textAlignment=\"LEFT\" toggleGroup=\"$mode\" HBox.margin=\"$x2\">\r\n              <tooltip>\r\n                <Tooltip text=\"5\u6841\u4ee5\u5185\u306e\u8db3\u3057\u7b97\" \/>\r\n              <\/tooltip>\r\n            <\/ToggleButton>\r\n          <\/children>\r\n        <\/HBox>\r\n        <HBox alignment=\"CENTER_RIGHT\" prefHeight=\"47.0\" prefWidth=\"296.0\" spacing=\"12.0\">\r\n          <children>\r\n            <Button fx:id=\"clearButton\" mnemonicParsing=\"true\" onAction=\"#handleClear\" text=\"_Clear\">\r\n              <tooltip>\r\n                <Tooltip text=\"\u6b21\u306e\u554f\u984c\" \/>\r\n              <\/tooltip>\r\n            <\/Button>\r\n            <Button fx:id=\"answerButton\" mnemonicParsing=\"true\" onAction=\"#handleAnswer\" text=\"_Answer\">\r\n              <tooltip>\r\n                <Tooltip text=\"\u30d5\u30a1\u30a4\u30ca\u30eb\u30a2\u30f3\u30b5\u30fc\uff1f\" \/>\r\n              <\/tooltip>\r\n            <\/Button>\r\n          <\/children>\r\n          <padding>\r\n            <Insets \/>\r\n          <\/padding>\r\n        <\/HBox>\r\n      <\/children>\r\n    <\/VBox>\r\n    <Label fx:id=\"resultLabel\" prefHeight=\"30.0\" prefWidth=\"-1.0\" text=\"\" textFill=\"RED\" \r\n           AnchorPane.leftAnchor=\"10.0\" AnchorPane.topAnchor=\"110.0\">\r\n      <font>\r\n        <Font size=\"20.0\" \/>\r\n      <\/font>\r\n    <\/Label>\r\n    <CheckBox fx:id=\"bgmCheck\" alignment=\"CENTER_LEFT\" allowIndeterminate=\"false\" contentDisplay=\"LEFT\" mnemonicParsing=\"true\" \r\n              selected=\"false\" text=\"_BGM\" textAlignment=\"LEFT\" AnchorPane.leftAnchor=\"5.0\" AnchorPane.topAnchor=\"73.0\">\r\n      <font>\r\n        <Font size=\"14.0\" \/>\r\n      <\/font>\r\n      <tooltip>\r\n        <Tooltip text=\"BGM \u8a2d\u5b9a\" \/>\r\n      <\/tooltip>\r\n    <\/CheckBox>\r\n  <\/children>\r\n<\/AnchorPane>\r\n\r\n<\/pre>\n<p>\u30a2\u30d7\u30ea\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u306e\u5909\u66f4\u3092\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b Calc2.java \u306e 19 \u884c\u76ee\u3067<\/p>\n<p>stage.setResizable(false);<\/p>\n<p>\u3068\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u5229\u7528\u3057\u3066 BGM \u3092\u6d41\u305b\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b CalcFormController.java \u306e 163 \u884c\u76ee\u304b\u3089 178 \u884c\u76ee\u307e\u3067\u3067<\/p>\n<p>\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u306b\u30ea\u30b9\u30ca\u30fc\u3092\u8a2d\u5b9a\u3057\u3066\u5236\u5fa1\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306f\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u6392\u4ed6\u5236\u5fa1\u53ef\u80fd\u3068\u3057\u3066\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f JavaFX Scene Builder \u3092\u4f7f\u3063\u3066\u7c21\u5358\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u305d\u308c\u305e\u308c\u5b9f\u88c5\u3057\u3066 JavaFX Scene Builder \u3067\u7d50\u3073\u3064\u3051\u308c\u3070\u3044\u3044\u3060\u3051\u3067\u3059\u3002<\/p>\n<p>\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306e\u30b0\u30eb\u30fc\u30d7\u3082 JavaFX Scene Builder \u3067\u7c21\u5358\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u4fbf\u5229\uff01\u4fbf\u5229\uff01<\/p>\n<p>\u305f\u3060\u524d\u8ff0\u3057\u305f\u3068\u304a\u308a\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u304c\u5fc5\u305a\u3069\u308c\u304b\u4e00\u3064\u9078\u629e\u72b6\u614b\u306b\u3042\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u305f\u3081\u9069\u5f53\u306a\u3053\u3068\u3092\u3084\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u304a\u305d\u3089\u304f\u3001\u306a\u3093\u3060\u3053\u308c\u306f\uff1f\u3068\u3044\u3044\u305f\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u30b9\u30de\u30fc\u30c8\u306a\u65b9\u6cd5\u3092\u77e5\u3089\u306a\u3044\u306e\u3067\u3053\u3046\u306a\u308a\u307e\u3057\u305f\u3002(^_^;)<\/p>\n<p>\u3088\u3063\u3066\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306b\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092\u8a2d\u5b9a\u3057\u3066\u3082\u4e0a\u624b\u304f\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u3060\u304b\u3089\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u306f\u3042\u304d\u3089\u3081\u307e\u3057\u305f\u3002\uff08\u30f2\u30d2<\/p>\n<p>\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3001\u30c6\u30ad\u30b9\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u3001\u30dc\u30bf\u30f3\u306b\u306f\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092 JavaFX Scene Builder \u3067\u7c21\u5358\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30d7\u30ed\u30d1\u30c6\u30a3\u306e Text \u6b04\u306b _ \u3092\u5148\u982d\u306b\u3064\u3051\u3066\u8a18\u5165\u3057\uff08_BGM)<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/5.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"5\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"5\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/5_thumb.jpg\" width=\"904\" height=\"615\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Mnemonic Parsing \u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092 ON \u306b\u3059\u308c\u3070\u3044\u3044\u3060\u3051\u3067\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/6.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"6\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"6\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/6_thumb.jpg\" width=\"904\" height=\"619\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3082\u540c\u69d8\u306b JavaFX Scene Builder \u3092\u4f7f\u3048\u3070\u697d\u52dd\u3067\u3059\uff01<\/p>\n<p>JavaFX Scene Builder \u306e\u30e9\u30a4\u30d6\u30e9\u30ea Popup Controls \u304b\u3089 Tooltip \u3092\u30c9\u30e9\u30c3\u30b0\u30a2\u30f3\u30c9\u30c9\u30ed\u30c3\u30d7\u3057\u3066<\/p>\n<p>\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3057\u3066\u3084\u308c\u3070\u3044\u3044\u3060\u3051\u3068\u3044\u3046\u975e\u5e38\u306b\u697d\u3061\u3093\u306a\u4f5c\u696d\u3067\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/7.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"7\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"7\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/7_thumb.jpg\" width=\"904\" height=\"615\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u4ee5\u4e0a\u3001\u3053\u3093\u306a\u611f\u3058\u3067\u3067\u304d\u3042\u304c\u308a\u307e\u3057\u305f\u3002<\/p>\n<p><b><font size=\"5\">Webstart:<\/font><\/b> <a onclick=\"return launchApplication('Calc.jnlp');\" href=\"http:\/\/yucchi.jp\/java\/java_web_start\/Calc2\/Calc.jnlp\"><font size=\"5\">click to launch this app as webstart<\/font><\/a><\/p>\n<p>\u3061\u3087\u3063\u3068\u4e94\u6708\u8805\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u304c\u3054\u52d8\u5f01\u3092\u3002<\/p>\n<p>\u3082\u3063\u3068\u3044\u308d\u3044\u308d\u697d\u3057\u3044\u3053\u3068\u304c\u51fa\u6765\u308b\u3088\u3046\u306a\u306e\u3067\u30dc\u30c1\u30dc\u30c1\u3068\u904a\u3093\u3067\u307f\u305f\u3044\u3068\u601d\u3063\u3066\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/cludia_2013_08_06_001.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"cludia_2013_08_06_001\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"cludia_2013_08_06_001\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2013\/08\/cludia_2013_08_06_001_thumb.png\" width=\"904\" height=\"649\"><\/a><\/p>\n<p><div id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:07448edf-888a-4958-b771-0beaf615740c\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">Hatena \u30bf\u30b0: <a href=\"http:\/\/b.hatena.ne.jp\/t\/JavaFX\" rel=\"tag\">JavaFX<\/a>,<a href=\"http:\/\/b.hatena.ne.jp\/t\/NetBeans\" rel=\"tag\">NetBeans<\/a><\/div><\/p>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_hatena\"><a href='\/\/b.hatena.ne.jp\/add?mode=confirm&url=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D1228&title=JavaFX%20%E3%81%A7%E3%81%95%E3%82%89%E3%81%AB%E8%B6%B3%E3%81%97%E7%AE%97%E3%81%AE%E3%81%8A%E5%8B%89%E5%BC%B7' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/hatena.gif' alt='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' width='16' height='12' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D1228&t=JavaFX%20%E3%81%A7%E3%81%95%E3%82%89%E3%81%AB%E8%B6%B3%E3%81%97%E7%AE%97%E3%81%AE%E3%81%8A%E5%8B%89%E5%BC%B7' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"http:\/\/yucchi.jp\/blog\/?p=1228\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"http:\/\/yucchi.jp\/blog\/?p=1228\" data-text=\"JavaFX \u3067\u3055\u3089\u306b\u8db3\u3057\u7b97\u306e\u304a\u52c9\u5f37\" data-lang=\"ja\">Tweet<\/a><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5229\u7528\u3057\u3066\u4eca\u56de\u3082 JavaFX \u3067\u8db3\u3057\u7b97\u30a2\u30d7\u30ea\u306b\u624b\u3092\u52a0\u3048\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002 \u4eca\u56de\u8ffd\u52a0\u3059\u308b\u6a5f\u80fd\u306f \u30a2\u30d7\u30ea\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u306e\u5909\u66f4\u3092\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002 \u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u5229\u7528\u3057\u3066 BGM \u3092\u6d41\u305b\u308b\u3088\u3046\u306b\u3059\u308b\u3002 \u554f\u984c\u306e\u96e3\u6613\u5ea6\u3092\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u3092\u6392\u4ed6\u5236\u5fa1\u3057\u3066\u53ef\u80fd\u306b\u3059\u308b\u3002 \u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u8a2d\u5b9a\u3059\u308b\u3002 \u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092\u8a2d\u5b9a\u3059\u308b\u3002 \u7d50\u5c40\u3001\u3053\u3093\u306a\u611f\u3058\u306b\u3067\u304d\u3042\u304c\u308a\u307e\u3057\u305f\u3002 &nbsp; &nbsp; &nbsp; &nbsp; \u30c8\u30b0\u30eb\u30dc\u30bf\u30f3\u306f\u79c1\u306e\u5b9f\u529b\u3067\u306f\u30cb\u30fc\u30e2\u30cb\u30c3\u30af\u3092\u6b63\u3057\u304f\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304b\u3063\u305f\u306e\u3067\u8ae6\u3081\u307e\u3057\u305f\u3002(&gt;_&lt;\uff61) \u7d20\u76f4\u306b\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u3092\u4f7f\u3048\u3070\u3088\u304b\u3063\u305f\u304b\u3082\u30fb\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,4],"tags":[21,19],"class_list":["post-1228","post","type-post","status-publish","format-standard","hentry","category-javafx","category-netbeans","tag-javafx","tag-netbeans"],"_links":{"self":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1228"}],"version-history":[{"count":3,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1228\/revisions"}],"predecessor-version":[{"id":1231,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1228\/revisions\/1231"}],"wp:attachment":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1228"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}