問題タブ [inputverifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JTextFieldsが0より大きい数値で検証された後、JavaでJButtonsを有効にしますか?
すべてのフィールドに有効なデータ、つまり数値があり、負の数がない場合にのみ有効になるボタンが 2 つあります。
java - コンポーネントの反復と検証に関する問題
JTextField
パネル内のすべてのsをチェックしてJPanel
、それらが空であるかどうかを確認するメソッドがあり、コンテナー内のすべてのコンポーネントを反復処理しています。コンテナには、ラベル、テキストフィールド、コンボボックスがあります。JTextField
したがって、最初の数秒を検証することはできますが、最初JComboBox<?>
の検証が停止し、その理由がわからないようです。以下はコードです:-
どんな援助も大歓迎です。
また、これはボタン(たとえば保存ボタン)がクリックされたときに呼び出されることに注意してください。
java - setInputVerifier から生成されたメッセージを回避して、Java Swing アプリケーションを終了する方法
InputVerifier の助けを借りて、入力データに何らかの制約を課したテキスト フィールドがあります。制約は、テキスト フィールドが空のままの場合、エラー メッセージがポップアップ表示されることです。アプリケーションが起動すると、カーソルはテキスト フィールド (text_field.requestFocusInWindow()) に残ります。
ここで、終了ボタンをクリックすると、いつでも、アプリケーションはすぐに終了するはずです。ただし、テキスト フィールドが空のままの場合は、エラー メッセージが表示され、終了しません。この問題を解決するには?
終了コード:
java - InputVerifierが誤ってフォーカスを生成し、他のActionListenerメソッドで使用する際のアドバイスが必要
ユーザーがいくつかのフィールドに測定値を入力し、測定値に基づいて結果を計算するGUIがあります。私はフィールドに以下を実装しようとしています-
- 入力する値は適切な範囲内である必要があります
- とりわけ、単位を設定するオプションダイアログがあります。値が含まれるフィールドは、現在の単位に更新する必要があります
- フィールドの値が変更されたら、すべての測定値が入力されているかどうかを確認する必要があります。入力されている場合は、計算を実行(またはやり直し)します。
私はテーブルでこのようなことをしました(モデルは「標準」単位で値を保持し、カスタムレンダラーとセルエディターはユーザーに現在の単位の値を表示し、モデルの「標準」単位で値を保存します)。
JTextFieldにオーバーライドするレンダラーがあるとは思わない、ドキュメントエディターは少し気が遠くなるように見え、ユーザーはJFormattedTextFieldが気に入らなかったので、「標準」値を格納するカスタムJTextFieldを作成し、inputVerifierを使用すると思いました。以前にテーブルに使用したものです。
サンプルコードは以下のとおりです(ほとんど機能します)。オプションダイアログの代用としてJComboBoxを使用し、1つのテキストフィールドのみを実装しました。
私はいくつかの専門家のアドバイスを使うことができます-
- setInputVerifierを誤解している可能性があります。テキストフィールドからフォーカスを変更し、フォーカスを生成しないと言った場合はテキストフィールドにフォーカスを維持しようとすると、呼び出されるはずだと思いました。ただし、テキストフィールドに「aa」を入力すると(Enterキーを押さずに)、コンボボックスの値を変更できます。私のデバッグprintlnは言う-
ボリューム値が変更されました(f)//フォーカスリスナーが起動しましたモデルの更新//フォーカスリスナーから検証中:'aa'//入力ベリファイアから無効な番号//入力ベリファイアから
テキストボックスの輪郭が赤くなり、ビープ音が鳴りますが、コンボボックスはアクティブです。値を変更するとコンボボックスアクションリスナーが呼び出されるため、テキストフィールドは空の値になります。comboxの値を変更できるのはなぜですか?どうすればそれを止めることができますか?
- InputVerifier、2つのActionListeners、およびFocusListenerを追加するのは間違っているようです。私はタスクの論理的な分離が好きです。私は何をすべきですか?DoubleVerifierを拡張し、actionPerformedをオーバーライドして、現在DoubleVerifierにあるものと、VolumeValueListenerにあるものだけを含める必要がありますか?
ユーザーが(CR)を入力してフィールドにとどまるとき、またはユーザーがフィールドを離れるときに、テキストフィールドを検証し、基になるデータのビューを更新する必要があります。これが、アクションとフォーカスのリスナーがいる理由です。
訂正や洞察は大歓迎です。
UnitsTextField.java
UnitsLabel.java
Conversion.java
DoubleVerifier.java
VolumeTextFieldTest.java
java - JComponents を確認する方法
上記のフィールド (ユーザー名とパスワード) を検証したいのですが、ユーザー名と az に alohabet(az)、パスワードに 0-9 のみを使用したいのですが、どうすればよいですか? スイング初心者です
java - 範囲のジェネリック InputVerifier
JComponent 内のデータが指定された範囲内にあるかどうかを確認する汎用 InputVerifier を作成しようとしています。このために、ジェネリック型を Comparable<> に拡張して、比較できるようにしました。
私が引っかかっているのは、次の2つのことです。
- JComponent には getText() メソッドがありません。また、JTextField や JSpinner などの一般的なコンポーネントで使用されるキャスト先のサブクラスもありません。これらのコンポーネントには、それぞれ値を取得するための異なるメソッドがあります。
- ジェネリック型 DataType に特定の関数シグネチャが必要であると指定できるとは思いません。単一の文字列(Integer、Double、Floatのように)を受け取るコンストラクターがあることを強制できるかどうか、またはDataTypeがInteger、Double、またはFloatのいずれかを拡張する必要があることを強制できるかどうかを確認しようとしていましたが、よくわかりませんこれが Java 7 Generics で可能な場合。次のようなことができれば素晴らしいと思います:
DataType myData = new DataType(text);
これが私が今持っているクラスです。抽象化したので、サブクラスは、テキストを返すために関係する JComponent の型を認識し、比較のために比較可能な型を構築する方法を知る必要があります。これにより、さまざまなタイプの JComponents および Comparable タイプが使用される可能性があるため、多くの順列が発生する可能性があります。上記の問題の 1 つまたは両方を解消する方法はありますか?
java - Format が JFormattedTextField に適用された後に検証を強制する方法はありますか?
最初に行うことはNumberFormat
、自分のニーズに適した を作成することです。
次に、それを JFormattedTextField に適用します。
次に、このフィールドのを次のInputVerifier
ように設定します。
入力IdVerifier
されたテキストが正規表現に準拠していることを確認するだけです。
ただし、これを行うときは、に値を入力しますJFormattedTextField
。たとえば、「1」としましょう。これは、によって「000001」に再フォーマットされNumberFormatter
ます。ただし、この例では、テキスト フィールドの背景はまだ赤に設定されています。
JFormattedTextField
のフォーマットされたコンテンツがによって消費されるものであることを確認する正しい方法は何InputVerifier
ですか? デフォルトの動作では、フォーカスが失われ、フォーマッタが適用され、入力が検証されると予想していました。しかし、そうではないことは明らかです。
java - JTextField InputVerifier
入力ベリファイアをテキスト フィールドに設定しました。
55555
テキストフィールドに入力するとtrue
、「なぜ?」と表示されます。
java - JTextFields に異なる inputVerifier を設定する
ここで、InputVerifier をテキスト フィールド ( tf1
)に設定します。
ここで、入力ベリファイアを 2 番目のテキスト フィールド ( tf2
) に設定したいのですが、tf2
ベリファイアの条件が とは異なりtf1
ます。
たとえば、私verify()
ののは次のtf2
ようになります。
その他のテキスト フィールドについても同様です。
1 つの拡張クラスで条件の異なる 2 つ以上のテキスト フィールドを検証する方法は?