0

わかりました、入力した関数の極値を解く電卓タイプのプログラムを作成しようとしています。これを行うには、機能がオンになっている間隔を設定する必要があります。これは、方程式用に​​ 1 つ、間隔用に 2 つの、3 つの異なるテキスト フィールドがあることを意味します。

そのため、数式フィールドに数値を正常に入力できますが、他の 2 つのフィールドに入力しようとすると問題が発生します。2 つのテキスト フィールドのいずれかをクリックすると、そのフィールドがフォーカスされることがわかっています。フォーカスがあるかどうかを確認してフィールドの新しいテキストを設定しようとすると、ボタンをクリックすると常にフォーカスがボタンに変わるため、結果が得られません。

TL;DR

どのテキスト フィールドが以前にフォーカスされていたかを調べて、数値を入力する方法を知るにはどうすればよいですか。

編集:完全に入力するためのより良い方法があれば、それが何であるかを知りたいです.

4

1 に答える 1

2

あなたの質問は、実際の問題が(私にとっては)計算を行う前にユーザーがすべてのデータを入力したことを確認することである場合、それが主要な問題であるかのようにフォーカスに集中するXY 問題の例のようです。

フォーカスを気にしないことをお勧めします。DocumentListeners を使用して JTextField が空かどうかを確認し、すべての JTextField にテキストが含まれるまで計算ボタンを無効にします。これには焦点が本当に重要であるべきだとは思いません。

あなたの状態を編集
:

わかりました、状況を改善できると思われる場合。0 ~ 9 の数字とさまざまな機能に対応する 3 つのテキスト フィールドとボタンがあります。1 つのテキスト フィールドをクリックし、ボタンから数字を入力し、別のフィールドをクリックして、作成したボタンから数字を入力できるようにしたいと考えています。ユーザーがクリックしたテキスト フィールドを取得するにはどうすればよいですか?

わかりました、それは私があなたの問題をもう少しよく理解するのに役立ちます. 考えられる解決策の 1 つは、JButton をそれぞれ呼び出してフォーカス不可にすることmyButton.setFocusable(false)です。次に、ボタンを押しても、JTextField からフォーカスが取り除かれません。

于 2012-12-05T23:37:43.103 に答える