0

私はいくつかのテキストフィールドとボタンを取得した Java でプログラムを書いています。

java.lang.NumberFormatException: For input string: ""プログラムの実行時にすべてのテキストフィールドに入力しても、エラーが発生します。

私のコードは次のようになります。

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        method();
    }
}
            );




public void method() { 
    try { 
        String string1 = textfield1.getText();
        String string2 = textfield2.getText();
        String string3 = textfield3.getText();
        if ( string1.length() == 0 || string2.length() == 0 || string3.length() == 0) { 
            System.out.println("fill in the required text fields");
            return;
        } 
        int number = Integer.parseInt(textfield3.getText());
        //do something
    }
    catch ( NumberFormatException e ) { 
        System.out.println("Wrong format");
    }
}

編集:

ここでより多くのコードを参照してください

4

1 に答える 1

2

あなたのプログラムを少しテストしましたが、パネルの作成とアクティブなパネルの切り替えにより、テキスト フィールドに問題が発生しました。

コンストラクターで、JTextField を作成する something() メソッドを呼び出します。ボタンをクリックすると、something() が再度呼び出され、パネルに追加する新しい JTextField が生成されます。

したがって、GUI のまったく同じ位置に 2 つの JTextField がありますが、そのうちの 1 つ (最後に作成されたもの) への参照のみがあります。

メソッド()を呼び出すボタンをクリックすると。非表示の TextField は彼のテキストを求められ (これが私の PC での動作です)、これは常に空です。

これを簡単に修正するには、メソッド actionPerformed を変更します。

@Override
public void actionPerformed( ActionEvent e ) {
    if ( e.getSource() == button1 ) {
        present = something;
        button1.setVisible(false);
        //something();
        visiblePanel();
        previous = something;
    }

}

したがって、JTextField の新規作成は避けますが、visiblePanel() により、TextField と 2 番目のボタンが確実に表示されます。

この変更の後、「sadda」と入力してボタンを押すと、出力「Numberformatexception」が表示されます。数値を入力しても何も表示されないため、書式設定が機能します。

于 2013-05-09T23:28:57.340 に答える