0

私の最初のfxml(ボタン):

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<StackPane xmlns:fx="http://javafx.com/fxml" fx:controller="fxml_grid_test.fxml_gridtest_controller" >
    <Button fx:id="insertBut" text="insert" onMouseClicked="#insertData"/>
</StackPane>

私の2番目のfxml(グリッドペイン):

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import java.net.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="fxml_grid_test.fxml_gridtest_controller"> 
    <top>
        <GridPane fx:id="gpane">
        </GridPane>
    </top>
</BorderPane>

私のコントローラー:

package fxml_grid_test;

import java.io.IOException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class fxml_gridtest_controller extends Application {

   @FXML private Button insertBut;
    @FXML private GridPane gpane;

    @FXML private void insertData() throws IOException{
        gpane.add(new Label("test"), 0, 0);
        Stage primaryStage = new Stage();

        Parent root = FXMLLoader.load(getClass().getResource("grid_fxml.fxml"));
                         Scene scene = new Scene(root, 500, 350);
                             primaryStage.setScene(scene);
                                primaryStage.show();
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

私のメイン:

package fxml_grid_test;

import java.io.IOException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Fxml_grid_test extends Application {

    @Override
    public void start(Stage primaryStage) throws IOException {
        Parent root = FXMLLoader.load(getClass().getResource("button_fxml.fxml"));

        Scene scene = new Scene(root, 300, 275);

        primaryStage.setTitle("insert data test");
        primaryStage.setScene(scene);
        primaryStage.show();

    }


    public static void main(String[] args) {
        launch(args);
    }

}

アイデアは次のとおりです。ボタンを押したときに、いくつかのデータをグリッドペインに挿入してから、fxml を表示します。私のfxmlは両方ともコントローラーを共有しています。これが問題の根本だと感じていますが、解決方法がわかりません。

4

1 に答える 1