Я только начинающий в javafx. Я использовал его, используя конструктор сцены, но теперь я пытаюсь изучить основы без конструктора сцены. Я делаю следующий код в NetBeans. Библиотечные файлы, которые я включил,
package login;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Login extends Application {
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25,25,25,25));
Scene scene = new Scene(grid, 300, 275);
Text scenetitle = new Text("Please Login: ");
scenetitle.setFont(Font.font("Tahoma",FontWeight.NORMAL, 20));
Label userName = new Label("User Name:");
TextField userTextField = new TextField();
Label pw = new Label("Password: ");
PasswordField pwBox = new PasswordField();
grid.add(scenetitle,0,0,2,1);
grid.add(userName,0,1);
grid.add(userTextField, 1,1);
grid.add(pw,0,2);
grid.add(pwBox,1,2);
grid.setGridLinesVisible(false);
Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn,1,4);
final Text actiontarget = new Text();
grid.add(actiontarget,1,6);
btn.setOnAction(event ->
{
actiontarget.setFill(Color.TURQUOISE);
actiontarget.setText("Sign in button pressed");
});
scene.getStylesheets().
add(Login.class.getResource("Login.css").toExternalForm());
primaryStage.setTitle("JavaFX Login Form");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
после использования этого класса я использовал следующий код CSS для стилизации программы
.root {-fx-background-image: url("background.png");}
.label {
-fx-font-size: 12px;
-fx-font-weight: bold;
-fx-text-fill: #0E1D33;
}
#login-text{
-fx-font-size:32px;
-fx-font-family: "Arial Black";
-fx-fill: #115E7F;
}
#actiontarget {
-fx-fill:WHITE;
-fx-font-weight:bold;
}
.button {
-fx-text-fill:white;
-fx-font-family:"Arial Narrow";
-fx-font-weight:bold;
-fx-background-color:linear-gradient(#61a2b1,#2A5058);
}
и это дает мне следующие исключения после выполнения кода
Исключение в методе запуска приложения
java.lang.reflect.InvocationTargetException
и
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at login.Login.start(Login.java:72)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Exception running application login.Login
E:\NetBean Projects\Java FX Lynda Following\Login\nbproject\build-impl.xml:1052: The following error occurred while executing this line:
E:\NetBean Projects\Java FX Lynda Following\Login\nbproject\build-impl.xml:806: Java returned: 1