前提・実現したいこと
プログラミング初心者です。この度javaFXを学び始めようと思い、入門用のサイトで勉強を始めていました。サンプルを参考にし、intelij IDEA でデバッグをしていたところ、次のようなエラーが出てしまったので、これを解決したいとおもっています。
参考にさせていただいたサイトのURL
https://www.tuyano.com/index3?id=7346003&page=2
発生している問題・エラーメッセージ
javafx.fxml.LoadException: Page language not specified. /C:/Users/golde/IdeaProjects/HelloWorld/target/classes/com/example/helloworld/hello-view.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 com.example.helloworld/com.example.helloworld.HelloApplication.start(HelloApplication.java:19) 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)
該当のソースコード
HelloApplication.java
1package com.example.helloworld; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Scene; 6import javafx.scene.layout.BorderPane; 7import javafx.stage.Stage; 8 9import java.io.IOException; 10 11public class HelloApplication extends Application { 12 public static void main (String[] args){ 13 launch(args); 14 } 15 @Override 16 public void start(Stage stage){ 17 BorderPane root; 18 try { 19 root = (BorderPane)FXMLLoader.load(getClass().getResource("hello-view.fxml")); 20 Scene hello = new Scene(root,360,120); 21 stage.setScene(hello); 22 stage.show(); 23 }catch (IOException e){ 24 e.printStackTrace(); 25 } 26 } 27 28}
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<?language javascript?> 4<?import java.lang.*?> 5<?import java.net.URL ?> 6<?import javafx.scene.text.*?> 7<?import javafx.scene.control.*?> 8<?import javafx.scene.layout.*?> 9 10<BorderPane xmlns="http://javafx.com/javafx/8" 11 xmlns:fx="http://javafx.com/fxml/1"> 12 <fx:script> 13 function doAction(event){ 14 var str = field1.getText(); 15 str = "あなたは「" + str + "」と書いた。"; 16 label1.setText(str); 17 } 18 </fx:script> 19 <stylesheets> 20 <URL value="@hello.css" /> 21 </stylesheets> 22 <top> 23 <Label fx:id="label1" text="This is FXML!" /> 24 </top> 25 <center> 26 <TextField fx:id="field1" /> 27 </center> 28 <bottom> 29 <Button onAction="doAction(event);" text="Click" /> 30 </bottom> 31</BorderPane>
hello.css
1 2Label#label1 { 3 -fx-font-family:Serif; 4 -fx-font-size:24pt; 5}
試したこと
いろんなサイトを参考にしたのですが<?language javascript?>をかいているのでfx:scriptタグはjavascriptだとして認識されるものであるとしか思えず困っています。
補足情報(FW/ツールのバージョンなど)
IntelliJ IDEA Community Edition 2021.3.1
java 17.01
あなたの回答
tips
プレビュー