0

私はこのコードを作成したい: ユーザーが数値を入力すると、文字を入力すると例外がスローされ、フィールドが機能しなくなり、別のフレームが表示され、ユーザーが新しいフレームを閉じた後にエラーメッセージが表示され、すべてが元の方法に戻りますそれは、フィールドが再び機能することを意味します! フィールドの動作を停止させることはできましたが、ユーザーが新しいフレームを閉じたかどうかはわかりませんでした。ここに私の試みがあります

public void keyReleased(KeyEvent event) {

try{
double l,h,w;
l=Double.parseDouble(input_length.getText());
w=Double.parseDouble("0"+input_width.getText());
h=Double.parseDouble("0"+input_width.getText());
}

catch(NumberFormatException a){


input_length.setEditable(false);
input_height.setEditable(false);
input_width.setEditable(false);

JFrame ErrorFrame = new JFrame("Error");
JPanel content = new JPanel(); ;
ErrorFrame.setContentPane(content);

ErrorFrame.setSize      (350, 150);
ErrorFrame.setResizable (false);
ErrorFrame.setLocation  (FRAME_X_ORIGIN, 250);

content.setLayout(new FlowLayout());
JLabel text = new JLabel(" ERROR ! please Enter number only ",JLabel.CENTER);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setForeground(Color.red);
content.add(text);
ErrorFrame.setVisible(true);

setDefaultCloseOperation(ErrorFrame.EXIT_ON_CLOSE);
int op = ErrorFrame.getDefaultCloseOperation();

if(op == 1 ){
input_length.setEditable(true);
input_height.setEditable(true);
input_width.setEditable(true);}

}
}
4

2 に答える 2

2

1)。JFrameエラー メッセージにnew を使用しないでください。使用JDialog 方法は次のとおりです。

2)。h=Double.parseDouble("0"+input_width.getText());私はあなたがinput_height.getText()ここで意味したと思います、そうではありませんinput_width.getText()

3)。エラー ダイアログを表示したら、テキスト フィールドをクリアするだけです。問題ありません。ユーザーがそれを閉じると、それらは空になります。

于 2012-05-11T11:30:16.337 に答える
1
  1. エラー メッセージを表示するモーダル ダイアログを選択する場合、フィールドの編集可能状態を変更する必要はありません。
  2. 個人的には、タイプミスをするたびにダイアログが表示されると、ユーザーとしてかなりイライラします。たとえば、無効な入力時にテキスト フィールドの背景色を赤に変更し、[OK] ボタン (または編集が終了したことを示すためにユーザーが持っているメカニズム) を無効にすることは、よりユーザー フレンドリーな IMO です。パネルにエラーを示すラベルやツールチップを表示することもできます ... .
  3. テキストフィールドのテキストの更新に反応したい場合は、 a のDocumentListener代わりに a をお勧めしますKeyListener

ユーザーにエラーを通知するために別のメカニズムを選択することを提案する理由の例: テキストフィールド (例: 3x456) に無効な値を貼り付けると、ダイアログがポップアップ表示されます。ここで、矢印キーを使用してエラーに移動し、修正したいと考えています。つまり、削除するには左に 3 つの位置を移動する必要がありxます。矢印キー (キーでもあります) を使用すると、ナビゲーション中にこのダイアログがさらに 3 回表示されます。

于 2012-05-11T12:06:00.870 に答える