簡體   English   中英

JFrame,JTextArea和設置變量

[英]JFrame, JTextArea, and Setting Variables

我有一個程序,希望使用JFrame和8個文本區域來設置8個變量的值。 當我填寫所有文本區域時,程序將運行。 當我將文本區域留空時,程序將失敗。 我收到以下錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String

然后,我得到一長串我認為發生錯誤的位置的清單?

因此,我嘗試使用此if語句說,如果將設置x3,y3,x4,y4值的文本區域留為空白,則程序仍將運行。

我有部分程序可以分別處理2、3和4個坐標對。

if(x3 == null && y3 == null && x4 == null && y4 == null){
r1 = new Regression(x1,y1,x2,y2,x3,y3,x4,y4);
r1.computation();
}

x3 == null ,我得到了其他信息:對於參數類型double,null,未定義運算符==

關於如何在不填充所有文本區域的情況下運行程序的任何想法?

我是Java的新手,現在才剛開始適應它。

編輯:下面的完整代碼

    package javaPackage;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Frame extends JFrame {

    private static final long serialVersionUID = 1L;
    public double x1;
    public double y1;
    public double x2;
    public double y2;
    public double x3;
    public double y3;
    public double x4;
    public double y4;


    public Regression r1;
    public Regression2 r2;

    public static void main(String[] args){
        new Frame().setVisible(true);
    }

    public Frame(){

        super("Senior Design");
        setSize(600, 600);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new FlowLayout());



        final JTextArea x1Test= new JTextArea (1,1);
        final JTextArea y1Test= new JTextArea (1,1);
        final JTextArea x2Test= new JTextArea (1,1);
        final JTextArea y2Test= new JTextArea (1,1);
        final JTextArea x3Test= new JTextArea (1,1);
        final JTextArea y3Test= new JTextArea (1,1);
        final JTextArea x4Test= new JTextArea (1,1);
        final JTextArea y4Test= new JTextArea (1,1);
        add(x1Test);
        add(y1Test);
        add(x2Test);
        add(y2Test);
        add(x3Test);
        add(y3Test);
        add(x4Test);
        add(y4Test);

        JButton button = new JButton("Compute");
        add(button);
        button.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                x1 = Double.parseDouble(x1Test.getText()); //need to convert to doubles
                y1 = Double.parseDouble(y1Test.getText());
                x2 = Double.parseDouble(x2Test.getText());
                y2 = Double.parseDouble(y2Test.getText());
                x3 = Double.parseDouble(x3Test.getText());
                y3 = Double.parseDouble(y3Test.getText());
                x4 = Double.parseDouble(x4Test.getText());
                y4 = Double.parseDouble(y4Test.getText());


                if(x3 == null && y3 == null && x4 == null && y4 == null){
                r1 = new Regression(x1,y1,x2,y2,x3,y3,x4,y4);
                r1.computation();
                }


                r2=new Regression2(x1,y1,x2,y2,x3,y3,x4,y4);//initializes the variables
                r2.computation();//starts the computation


            }
        });


    }
    }

NumberFormatException /”關於如何在不填充所有文本區域的情況下運行程序的任何想法?

您可能正在嘗試在初始化任何事件之前解析文本(在初始化過程中)。 我在這里看到很多東西是一個錯誤。 喜歡

JTextField field = new JTextField();
double num = Double.parseDouble(field.getText());

毫無疑問,這將為您帶來NumberFormatException因為其中沒有文本(錯誤提示為空字符串)。

您需要等到激發某些事件后再解析文本,而不是在初始化過程中。 例如按一下按鈕

private double num;
private JTextField field = new JTextField();
private JButton button  = new JButton("Nutton");

...
button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        num = Double.parseDouble(field.getText());
    }
});

“在x3 == null下,我得到其他信息:對於參數類型double,null,未定義運算符==”

如果x3double ,這是有道理的。 如我所說,我的注釋,原語(int,double等)不能為null。 它們的默認值為0,如果要檢查它們是否尚未初始化,請對照0檢查它們,而不是null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM