使用環境
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="あいさつ" />
→電球に×のマークがついている
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。