私の Swing アプリケーションでは、ユーザーは次のウィンドウに切り替える前に数値と値を挿入する必要があります。クリーンなプログラムのように、すべての入力が有効かどうかをチェックし、有効でない場合はエラー メッセージが表示され、次のウィンドウは開きません。
このチェックの構造は次のとおりです (例)。
Button buttonToOpenNextWindow = new JButton("next");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(checkValidty){
// (...)
new WindowA();
frame.dispose(); // (*)
}
}
});
(*) 注:複数の JFrame の原則が醜いことはわかっています。私はそれを変更しようとしていますが、この質問には関係ありません。
今、この質問の焦点は thischeckValidity()
であり、私は次のように構成しました:
private boolean checkValidity(){
// check input 1
try{
Integer.parseInt(textField1.getText());
}catch (NumberFormatException e){
new ErrorDialog("input 1 is invalid!"); // own implemented dialog
return false;
}
// check input 2
try{
Integer.parseInt(textField2.getText());
}catch (NumberFormatException e){
new ErrorDialog("input 2 is invalid!"); // own implemented dialog
return false;
}
// (...)
// check input n
try{
Integer.parseInt(textField_n.getText());
}catch (NumberFormatException e){
new ErrorDialog("input n is invalid!"); // own implemented dialog
return false;
}
return true;
}
これは私が望むとおりに機能しますが、コード自体は非常に醜いです。複数の入力オプションがあると、メソッドが200行、300行、またはそれ以上の長さになるためです(たとえば、数値であるかどうかだけでなく、数値が意味をなすかどうかもチェックするため)プログラムロジックなどのコンテキストで)。そのようなことを確認する Swing 独自の方法はありますか? または、分割メソッドを使用してこの機能を正確に実現する方法を知っている人はいますか?