こんばんは。今awtでGUIを作成しています。
テキストフィールドを作成し、入力したあとエンタ―ボタンを押したら桁数チェックなどを行い、妥当な入力であればカーソルを次のテキストフィールドに移動させ、妥当でなければ警告のダイアログボックスをだすアクションリスナーをaddActionListenerで作っていたのですが、
入力を確定させるのは何もエンターキーだけではなく、人によってはタブキーとか次のテキストボックスを選択して確定する人もいるだろうと思い、addFocuslistenerも加えました。以下がその部分です。
field1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent ae){
String gt_field1=field1.getText();
if(gt_field1.length()==5){keycheck();}
else{Tyuui("無効な入力です","5桁の文字を入力してください。");}
}
}
);
field1.addFocusListener(
new FocusListener(){
public void focusLost(FocusEvent e){
String gt_field1=field1.getText();
if(gt_field1.length()==5){keycheck();}
else{Tyuui("無効な入力です","5桁の文字を入力してください。");}
}
}
);
しかしこのようにしたら、エンターキーを押した時、妥当な入力だったら次のテキストフィールドに移動させるようにしているので、Focuslistenerも反応し、もう一度同じ処理をしてしまいました。妥当な入力でないときは警告のダイアログが2回でてきました。
そこでaddActionListenerのほうにはなにも調べさせず、フォーカスをはずすだけにしたらどうかと思ったのですが、requestFocus()もありますが他のテキストフィールドにフォーカスを当てたらまたおかしな事になりそうなのでただフォーカスをはずし、どこにもフォーカスがあっていない状態にしたいのですが、いい方法とかございましたら教えてはいただけませんか。
またEnterキーを押しただけでなく、Tabキーを押したり、マウスで別のところをクリックしてフォーカスが外れた時も桁チェックなどを行い、妥当な桁なら次のテキストフィールドにフォーカスをあてるいい方法などございましたらアドバイスの方、おねがいします。
No.1ベストアンサー
- 回答日時:
次に示すように、いろんなやり方があるけど、入力チェックもキーの動作のカスタマイズも、Swingのほうが設備が整っていて楽ですよ。
---------------------------------------------------
import java.awt.*;
import java.awt.event.*;
public class TfFocus{
static Frame frame;
static TextField tf1, tf2;
static Label lab1, lab2;
static boolean actionProcessed = false;
public static void main(String[] args){
frame = new Frame();
tf1 = new TextField(10);
tf2 = new TextField(10);
lab1 = new Label("_______________________________");
lab2 = new Label("_______________________________");
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.add(tf1);
frame.add(tf2);
frame.add(lab1);
frame.add(lab2);
tf1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if (tf1.getText().length() != 5){
lab2.setText("");
lab1.setText("A: 5つの文字を入力しておくれ");
}
else{
actionProcessed = true;
lab2.setText("");
lab1.setText("A: よろしい!,次へ行け");
tf2.requestFocusInWindow();
}
}
});
tf1.addFocusListener(new FocusListener(){
public void focusLost(FocusEvent e){
if (actionProcessed){
return;
}
else if (tf1.getText().length() != 5){
lab1.setText("");
lab2.setText("F: 5つの文字を入力してね");
tf1.setText("");
tf1.requestFocusInWindow();
}
else{
lab2.setText("いいわよ!では次ね");
}
}
public void focusGained(FocusEvent e){
}
});
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Java java final 1 2022/06/10 22:49
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を切り替えたい
-
あるコンボボックスを選択する...
-
チェックボックスを動的に生成する
-
cadで作った図面をフレーム上で...
-
JAVAアプレット(簡易計算機)...
-
JAVA コンソールではなくGUIで...
-
【Swing】JPanel クラス外から...
-
配列にnullを代入すると、null...
-
C#で動的配列Listの中身をListB...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
c# デリゲート関連の命名について
-
配列を逆順させて表示させる方...
-
応用情報技術者試験の令和元年...
-
getStringの値がNULLの時の処理
-
Path型をString型へ変換する(Java)
-
[JAVA]try 内の変数を外で!?
-
クラスを使った電卓のプログラム
-
system.out.printが出力されない
-
getName()で取得したファイル名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
javaで文字数制限するには?
-
JTableの列ヘッダ
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
コンパイルエラー <identifier...
-
JPanelの重ね方/OverlayLayout他
-
JPanelの切り替えと再描画
-
エラーで式の開始が不正ですと...
-
JTable の 列幅を個別に設定す...
-
VB6.0でのTextboxの高さ変更
-
連番をオブジェクト名の最後に...
-
ボタンクリック後パネルを再描...
-
JavaでのSwingを使った簡易電卓...
-
ArrayListの使い方について(初...
-
Buttonを押すと画像が表示され...
-
あるコンボボックスを選択する...
-
KeyListenerの使い方について
おすすめ情報