質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

634閲覧

[JavaFX] カスタムコンポーネントをSceneBuilderで登録してもCustomカテゴリに表示されない

URON

総合スコア20

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/12/27 06:58

編集2018/01/04 04:42

JavaFXでカスタムコンポネートをこのページを参考に作ってみたのですが、SceneBuilderにJarを登録してもCustomカテゴリーの欄にでてきません。

ちなみに、このページのコードをコピペしたらうまくいったので、自分のコードが何か間違ってると思うのですが、原因がわからないので質問させていただきました。

###ソースコード
Control.java

Java

1 2package customcontrol; 3 4import java.io.IOException; 5import java.net.URL; 6import java.util.ResourceBundle; 7import javafx.event.ActionEvent; 8import javafx.fxml.FXML; 9import javafx.fxml.FXMLLoader; 10import javafx.fxml.Initializable; 11import javafx.scene.control.Label; 12import javafx.scene.layout.AnchorPane; 13 14 15public class Control extends AnchorPane { 16 17 Control(){ 18 FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("control.fxml")); 19 fxmlLoader.setRoot(this); 20 fxmlLoader.setController(this); 21 22 try { 23 fxmlLoader.load(); 24 } catch (IOException exception) { 25 throw new RuntimeException(exception); 26 } 27 } 28 29 @FXML 30 Label label; 31 32 @FXML 33 void action(){ 34 label.setText("あいうえお"); 35 } 36} 37

control.fxml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.Button?> 4<?import javafx.scene.control.Label?> 5<?import javafx.scene.layout.AnchorPane?> 6<?import javafx.scene.text.Font?> 7 8<fx:root id="AnchorPane" prefHeight="200" prefWidth="320" style="-fx-background-color: gray;" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1"> 9 <children> 10 <Label fx:id="label" layoutX="65.0" layoutY="14.0" minHeight="16" minWidth="69" prefWidth="162.0" text="TEST" textFill="WHITE"> 11 <font> 12 <Font size="63.0" /> 13 </font></Label> 14 <Button layoutX="117.0" layoutY="121.0" mnemonicParsing="false" onAction="#action" text="Button" /> 15 </children> 16</fx:root> 17

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

多分2つ原因があると思います。

  1. コンストラクターがpublicでない
  2. JavaFXプロパティーが一つも定義されていない

1番目は他のパッケージからコントロールを使う場合でも失敗するのではないでしょうか?そうできないならSceneBuilderもそれをカスタムコントロールとは認めないのだろうと思います。

2番目はたまたま気づいただけです。

SceneBuilderのちゃんとした仕様書のようなものが欲しいところなんですが・・・残念ながら自分はその在処を知りません。Oracleのサイトに若干のドキュメントはありますが、チュートリアルとIDEからの使い方みたいな程度のことしか書いてないですね・・・


Oracleが手を放してしまったSceneBuilderですがどこかにドキュメントないものでしょうか。ソースを見るしかないんだろうか・・・

投稿2018/01/05 10:11

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問