javafx:textfield总是输出“”

发布于 2025-02-10 16:45:07 字数 4424 浏览 1 评论 0原文

我想在Javafx上进行测试驱动器,并尝试创建一个可以划分两个值的应用程序,但是每当我运行它时,它都会使TextField输出为“”。 这是我的代码:

package com.example.javafxprojecttest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

import static java.lang.System.*;

public class Divide extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Divide values");
        Label divisionVal1 = new Label("Dividend : ");
        TextField dividend = new TextField();
        TextField divisor = new TextField();
        Label divisionVal2 = new Label("Divisor : ");
        Button divide = new Button("Divide");
        String dividendString = dividend.getText();
        String divisorString = divisor.getText();
        double d = Double.parseDouble(dividendString) / Double.parseDouble(divisorString);
        divide.setOnAction(e -> {
                    out.println(d);
                }
        );
        GridPane root = new GridPane();
        root.addRow(0, divisionVal1, dividend);
        root.addRow(1, divisionVal2, divisor);
        root.addRow(2, divide);
        Scene scene = new Scene(root, 400, 400);
        stage.setScene(scene);
        stage.show();
    }

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

输出:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NumberFormatException: empty String
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.base/java.lang.Double.parseDouble(Double.java:651)
    at com.example.javafxprojecttest/com.example.javafxprojecttest.Add.start(Add.java:24)
    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)
    ... 1 more
Exception running application com.example.javafxprojecttest.Add

Process finished with exit code 1

我不知道如何解决此问题,也不知道我必须添加这个问题才能使您能够回答它。 我试图在Stackoverflow上查看许多其他问题,但发现没有什么对我有用,我对Stackoverflow(提出问题)也很新,所以我对记录错误的记录不太了解。

I wanted to do a test drive on JavaFx, and tried to create an app that can divide two values, but whenever i run it, it gives TextField output to be "".
Here's my code:

package com.example.javafxprojecttest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

import static java.lang.System.*;

public class Divide extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Divide values");
        Label divisionVal1 = new Label("Dividend : ");
        TextField dividend = new TextField();
        TextField divisor = new TextField();
        Label divisionVal2 = new Label("Divisor : ");
        Button divide = new Button("Divide");
        String dividendString = dividend.getText();
        String divisorString = divisor.getText();
        double d = Double.parseDouble(dividendString) / Double.parseDouble(divisorString);
        divide.setOnAction(e -> {
                    out.println(d);
                }
        );
        GridPane root = new GridPane();
        root.addRow(0, divisionVal1, dividend);
        root.addRow(1, divisionVal2, divisor);
        root.addRow(2, divide);
        Scene scene = new Scene(root, 400, 400);
        stage.setScene(scene);
        stage.show();
    }

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

Output :

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NumberFormatException: empty String
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.base/java.lang.Double.parseDouble(Double.java:651)
    at com.example.javafxprojecttest/com.example.javafxprojecttest.Add.start(Add.java:24)
    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)
    ... 1 more
Exception running application com.example.javafxprojecttest.Add

Process finished with exit code 1

I dont know how to fix this nor do I know wht I have to add with this question for you to be able to answer it.
I tried to look at a lot of other questions here on StackOverflow but found none to be useful to me, and I am also rather new to StackOverflow(asking questions), so I dont know much on documenting the error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懒的傷心 2025-02-17 16:45:07

好吧,我自己只将所有这些都转移到按钮动作中就得到了。

public void start(Stage stage) throws Exception {
    stage.setTitle("Divide values");
    Label divisionVal1 = new Label("Dividend : ");
    TextField dividend = new TextField();
    TextField divisor = new TextField();
    Label divisionVal2 = new Label("Divisor : ");
    Button divide = new Button("Divide");
    divide.setOnAction(e -> {
        String dividendString = dividend.getText();
        String divisorString = divisor.getText();
        double d = Double.parseDouble(dividendString) / Double.parseDouble(divisorString);
                out.println(d);
            }
    );

Well i got it myself by just transferring all that to inside the button action.

public void start(Stage stage) throws Exception {
    stage.setTitle("Divide values");
    Label divisionVal1 = new Label("Dividend : ");
    TextField dividend = new TextField();
    TextField divisor = new TextField();
    Label divisionVal2 = new Label("Divisor : ");
    Button divide = new Button("Divide");
    divide.setOnAction(e -> {
        String dividendString = dividend.getText();
        String divisorString = divisor.getText();
        double d = Double.parseDouble(dividendString) / Double.parseDouble(divisorString);
                out.println(d);
            }
    );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文