Avrei bisogno del vostro aiuto per risolvere un problema che ho.
Ho creato una interfaccia utilizzando la libreria JavaFX tramite il tool Scene Builder. Ho anche, per testarla, provato a gestire l'evento di pressione di un bottone che mi dovrebbe stampare il nome che inserisco. Il problema però è che il programma non mi parte proprio perchè mi viene sollevata una eccezione.
Questo è il codice:
codice:
package com.java8.mod19.application;
import java.io.IOException;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.fxml.FXMLLoader;
public class Main extends Application {
@Override
public void start(Stage stage) throws IOException {
stage.setTitle("Rubrica");
GridPane root = (GridPane) FXMLLoader.load(getClass().getResource("Rubrica.fxml"));
stage.setScene(new Scene(root));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
codice:
package com.java8.mod19.application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class SampleController {
@FXML
private TextField textFieldNome;
@FXML
private TextField textFieldIndirizzo;
@FXML
private TextField textFieldNumero;
@FXML
private Button buttonAggiungi;
@FXML
private TextField textFieldDaCercare;
@FXML
private Label labelCercato;
@FXML
private Button buttonCerca;
@FXML
public void initialize() {
assert textFieldNome != null : "fx:id=\"textFieldNome\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert textFieldIndirizzo != null : "fx:id=\"textFieldIndirizzo\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert textFieldNumero != null : "fx:id=\"textFieldNumero\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert buttonAggiungi != null : "fx:id=\"buttonAggiungi\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert textFieldDaCercare != null : "fx:id=\"textFieldDaCercare\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert labelCercato != null : "fx:id=\"labelCercato\" was not injected: check your FXML file 'Rubrica.fxml'.";
assert buttonCerca != null : "fx:id=\"buttonCerca\" was not injected: check your FXML file 'Rubrica.fxml'.";
buttonCerca.setOnAction((ActionEvent event) -> {
String nome = textFieldDaCercare.getText();
labelCercato.setText(nome);
});
}
}
codice:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.GridPane?>
<GridPane hgap="10.0" maxHeight="400.0" maxWidth="350.0" minHeight="400.0" minWidth="350.0" prefHeight="400.0" prefWidth="350.0" vgap="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.java8.mod19.application.SampleController">
<opaqueInsets>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</opaqueInsets>
<columnConstraints>
<ColumnConstraints maxWidth="168.0" minWidth="10.0" prefWidth="168.0" />
<ColumnConstraints maxWidth="250.0" minWidth="120.0" prefWidth="149.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" />
<RowConstraints maxHeight="42.0" minHeight="10.0" prefHeight="30.0" />
<RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" />
<RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" />
<RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" />
<RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" />
</rowConstraints>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
<children>
<Label id="Label1" text="INSERISCI DATI PERSONE">
<opaqueInsets>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</opaqueInsets>
</Label>
<TextField id="textFieldNome" text="nome" GridPane.columnIndex="1" />
<TextField id="textFieldIndirizzo" text="indirizzo" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<TextField id="textFieldTelefono" text="telefono" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Button id="buttonAggiungi" alignment="CENTER" mnemonicParsing="false" text="AGGIUNGI" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="3" GridPane.valignment="CENTER" />
<Separator prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="4" />
<Label text="INSERISCI NOME DA CERCARE" GridPane.rowIndex="5" />
<TextField id="textFieldDaCercare" text="nome" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Button id="buttonCerca" mnemonicParsing="false" text="CERCA" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="9" GridPane.valignment="CENTER" />
<Label id="labelCercato" GridPane.columnIndex="1" GridPane.rowIndex="6" GridPane.rowSpan="3" />
</children>
</GridPane>
Questo invece è il messaggio di errore:
codice:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$147(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda$48/128893786.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException:
/C:/Users/utente/Desktop/JAVA/PRATICA/modulo%2019/esercizi%20supplementari/19.b%20(FXML)/bin/com/java8/mod19/application/Rubrica.fxml
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at com.java8.mod19.application.Main.start(Main.java:18)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda$51/1657476094.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/1051754451.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/541423010.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$46/1775282465.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
... 23 more
Caused by: java.lang.NullPointerException
at com.java8.mod19.application.SampleController.initialize(SampleController.java:44)
... 32 more
Exception running application com.java8.mod19.application.Main
Mi aiutate a risolvere il problema?