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

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

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

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

解決済

JavaFxでdoActionが出来ない

Techann
Techann

総合スコア10

JavaFX

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

2回答

0評価

1クリップ

217閲覧

投稿2022/05/02 08:39

使用環境
window 10Home
eclipse: 2022-03 
jdk:bellsoft-jdk18.01+12
scenebuilder:JavaFX Scene Builder18.00

GUIの勉強で
実験的にscenebuilderで
Textfild(idはTF1)を入力し
ボタン(Bt1)を押せば
TextArea(TA1)に表示される

仕組みをscenebuilder作っていますが
Bt1にイベント機能を入れないで
起動する際は
イベント機能はないものの
設定したパーツは
画面に表示される。

しかしながら、Bt1にイベント機能を追加するとエラー表示されて動かなくなってしまいます。
どうすれば解決出来るのでしょうか

(Bt1のイベント機能の追加の追加
→・Bt1にonAction="♯onBt1Action"項目追加
<java script>

コード
</java script>の追加
)

・Main.java
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXMLLoader;

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}

Sample.xml

<?xml version="1.0" encoding="UTF-8"?> <?language javascript?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.TextArea?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.Pane?> <?import javafx.event.ActionEvent?> <BorderPane xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> <fx:script> function doAction(#onBt1Action){ var str=TF1.getText(); str="あなたは"+[str]+"と書いた"; TA1.setText(str); </fx:script> <stylesheets> <URL value="application.css"/> </stylesheets> <center> <Pane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"> <children> <TextField fx:id="TF1" layoutX="26.0" layoutY="29.0" /> <Button fx:id="Bt1" layoutX="26.0" layoutY="66.0" mnemonicParsing="false" onAction="#onBt1Action" text="あいさつ" /> <TextArea fx:id="TA1" layoutX="1.0" layoutY="116.0" prefHeight="86.0" prefWidth="200.0" /> </children> </Pane> </center> </BorderPane>

エラー内容

javafx.fxml.LoadException: Page language not specified.
/C:/Users/c1130/eclipse/ex/ex6/bin/application/Sample.fxml:18

at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2703)
at javafx.fxml/javafx.fxml.FXMLLoader$ScriptElement.processCharacters(FXMLLoader.java:1653)
at javafx.fxml/javafx.fxml.FXMLLoader.processCharacters(FXMLLoader.java:2937)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2644)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3331)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3287)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3255)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3227)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3203)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3196)
at ex6/application.Main.start(Main.java:14)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:833)

ーーーーーーーーーーーー
その他

/C:/Users/c1130/eclipse/ex/ex6/bin/application/Sample.fxml:18
→</fx:script>

at ex6/application.Main.start(Main.java:14)
→BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));

コンパイル時の時に
<TextField fx:id="TF1" layoutX="26.0" layoutY="29.0" />
→警告マークがついている
<Button fx:id="Bt1" layoutX="26.0" layoutY="66.0" mnemonicParsing="false" onAction="#onBt1Action" text="あいさつ" />
→電球に×のマークがついている

<TextArea fx:id="TA1" layoutX="1.0" layoutY="116.0" prefHeight="86.0" prefWidth="200.0" /> →警告マークがついてる 参考にしたサイト http://libro.tuyano.com/index2?id=8356003 →上記の内容に大体に沿って考えていきました

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaFX

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