java fx学習中です。
ボタンクリックにイベントハンドラを持たせたいのですが、クリックの画面遷移ができません。
そもそもfxの概念がわかっていないのが問題と思います。
アンカーパネルを土台にして複数のアンカーパネルを用意してfx:id
で制御しようと思ったのですが、できませんでした。
これは発想の問題ですか? 着眼点がズレていますか?
もしくは単なる技術不足ですか?
画面遷移をjavaアプリケーションで行いたいです。
解決策をご教授お願いします。
//---追記拝見しました。
[Main.java]
java
1package application; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Scene; 6import javafx.scene.layout.BorderPane; 7import javafx.stage.Stage; 8 9public class Main extends Application { 10 @Override 11 public void start(Stage primaryStage) { 12 try { 13 BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Sample.fxml")); 14 Scene scene = new Scene(root,600,500); 15 scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 16 primaryStage.setScene(scene); 17 primaryStage.show(); 18 } catch(Exception e) { 19 e.printStackTrace(); 20 } 21 } 22 23 public static void main(String[] args) { 24 launch(args); 25 } 26}
[MainController.java](イベントコントローラ)
java
1package application; 2 3import javafx.event.ActionEvent; 4import javafx.fxml.FXML; 5 6public class MainController extends DefaultController { 7 protected void dbMake(ActionEvent e) {} 8 protected void dbShow(ActionEvent e) {} 9 protected void dbDelt(ActionEvent e) {} 10 @Override 11 protected void retHome(ActionEvent e) {} 12 13}
[DefaultController.java](全ての画面に共通するイベントを記載)
java
1package application; 2 3import javafx.event.ActionEvent; 4 5abstract class DefaultController { 6 abstract protected void retHome(ActionEvent e); 7}
[sample.fxml]
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.Button?> 4<?import javafx.scene.control.CheckBox?> 5<?import javafx.scene.control.Hyperlink?> 6<?import javafx.scene.control.Label?> 7<?import javafx.scene.control.ScrollPane?> 8<?import javafx.scene.layout.AnchorPane?> 9<?import javafx.scene.layout.BorderPane?> 10 11<BorderPane stylesheets="@application.css" xmlns="http://javafx.com/javafx/9.0.4" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController"> 12 <center> 13 <AnchorPane prefHeight="500.0" prefWidth="600.0" BorderPane.alignment="CENTER"> 14 <children> 15 <AnchorPane fx:id="main" prefHeight="500.0" prefWidth="600.0"> 16 <children> 17 <Label layoutX="240.0" layoutY="60.0" styleClass="title" text="DB管理メイン画面" /> 18 <Button layoutX="370.0" layoutY="200.0" mnemonicParsing="false" onAction="#dbDelt" styleClass="deltBtn" text="DB削除" /> 19 <Button layoutX="260.0" layoutY="200.0" mnemonicParsing="false" onAction="#dbShow" styleClass="showBtn" text="DB閲覧" /> 20 <Button layoutX="150.0" layoutY="200.0" mnemonicParsing="false" onAction="#dbMake" styleClass="makeBtn" text="DB作成" /> 21 </children> 22 </AnchorPane> 23 <AnchorPane disable="true" prefHeight="500.0" prefWidth="600.0"> 24 <children> 25 <ScrollPane prefHeight="300.0" prefWidth="400.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="80.0"> 26 <content> 27 <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="300.0" prefWidth="400.0" styleClass="DB-List"> 28 <children> 29 <CheckBox layoutX="10.0" mnemonicParsing="false" prefHeight="20.0" text="DBname" /> 30 </children> 31 </AnchorPane> 32 </content> 33 </ScrollPane> 34 <Button layoutX="180.0" mnemonicParsing="false" prefWidth="90.0" styleClass="deltDB-cxlBtn" text="キャンセル" AnchorPane.bottomAnchor="50.0" /> 35 <Button layoutX="350.0" mnemonicParsing="false" styleClass="deltDB-dltBtn" text="削除" AnchorPane.bottomAnchor="50.0" /> 36 </children> 37 </AnchorPane> 38 <Hyperlink layoutX="220.0" styleClass="retHome" text="メイン画面に戻る" AnchorPane.bottomAnchor="20.0" /> 39 40 </children> 41 </AnchorPane> 42 </center> 43</BorderPane>
と書いています。
DB管理デスクトップアプリを作りたいです。
回答1件
あなたの回答
tips
プレビュー