0

これを Java で記述する方法がわからない... ユーザーが 10 ~ 100 フィートの範囲外の値を入力した場合、デフォルト値 (50 など) を挿入するコードを作成する必要があります。空白または非整数が入力された場合、または値が範囲外であるが、デフォルトを統合する方法がわからない場合、エラーに対して機能します。私が持っている作品は

JPanel panel1 = new JPanel();
    panel1.setLayout(new FlowLayout());
    poolLength = new JTextField(10);
    panel1.add(new JLabel("Enter the pool's length (ft):"));
    panel1.add(poolLength);

追加したいのは、このようなものです

If poolLength <10 or >200 then poolLength = 100
        Else this.add(panel1);
4

3 に答える 3

0

最も簡単な方法は、たとえば 中にテキストを取得し、ActionEventそれを解析して、範囲外の場合はテキストをリセットすることです。

jTextField.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        boolean isValid = true;

        try {
            int intVal = Integer.parseInt(jTextField.getText());
            if (intVal < 10 || intVal > 200) {
                isValid = false;
            }
        } catch (NumberFormatException x) {
            // user entered something which is not an int
            isValid = false;
        }

        if (!isValid) {
            jTextField.setText("100");
        }
    }
});

テキスト フィールドの使用方法も参照してください。

別の方法は、デフォルトでこのようなことを行うスピナーを使用することです。

于 2013-10-17T22:58:55.007 に答える
0

免責事項:私はSwingをよく知りません。実際、あまり覚えていません..

JTextFieldにバリデーターをアタッチするだけでよいのではないでしょうか?

ここに例がありますが、その投稿では、内容ではなくテキストの長さをチェックしていることに注意してください。ただし、テキストがあれば、それを数値として簡単に解析し、境界よりも大きい/小さいかどうかを確認できます。

その投稿でわかるように、true/false を返すことで、ユーザーが間違った値を入力するのを防ぐことができます。小さすぎる。さて、間違った値が検出された場合、「false」を返す代わりに、 その入力を単純にすることは可能でしょうか? myjtextfield.setText("50.0")それはまさにあなたが望んでいたことをするかもしれません。

本当に、これらの「おそらく」には注意してください。私は Swing を知りませんが、一般的な UI フレームワークの設計から、「setText」を試みると、次の可能性があります。

  • 例外をスローします。多くのフレームワークは、検証中にフィールドの値を変更し、それに対して防御することは非常に悪いと考えています
  • 編集時に奇妙な問題が発生します: JTextEdit がテキストの変更ごとに検証を呼び出す場合、すべて選択、削除、123 の書き込みなどを試みると、奇妙なことに気付くでしょう。JTextEdit として 50.0123 または 12350.0 になるでしょう削除後に中間の空のテキストを検証して、「50.0」に強制しようとする可能性があります..
  • または、うまくいくかもしれません。

したがって、時間が重要な場合は、試してみてください。たぶん、私はよく推測しました。でも、もし時間に余裕があれば、私がナンセンスなことを書いていないことを誰かが確認するまで待ってください。

于 2013-10-17T19:11:50.003 に答える