課題の一環として、JTextField から値を取得しようとしています。私が取得しようとしているのは、口座の利率です。それはゼロより大きくなければならず、ユーザーはゼロより大きい何かを与えるまで尋ねられるべきです。また、入力がテキスト文字列などの数値以外の場合もエラーが発生し、ユーザーに再度確認する必要があります。
一部の作業は完了しましたが、タスクを完了するのに問題があります。
以下は、GUI を呼び出すメソッドです。
//getting the interest rate
protected void getInterest() {
if( this instanceof flexibleAccount ) {
}
else {
GetInterest getInterest = new GetInterest();
getInterest.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
getInterest.setSize( 350, 100 );
getInterest.setVisible(true);
}//end else
}//end getInterest
ここに行きます:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.util.InputMismatchException;
public class GetInterest extends JFrame {
private JTextField textField;
private double interestRate;
public GetInterest() {
super("Banking Application");
setLayout( new FlowLayout() );
textField = new JTextField("Enter interest rate",10);
add(textField);
TextFieldHandler handler = new TextFieldHandler();
textField.addActionListener( handler );
}//end GetInterest
private class TextFieldHandler implements ActionListener {
@Override
public void actionPerformed( ActionEvent event ) {
try {
String string;
string = textField.getText();
//string = String.format("%s", event.getActionCommand());
interestRate = Double.parseDouble(string);
if( interestRate <= 0 )
JOptionPane.showMessageDialog( null, "Interest rate should be greater than zero" );
else if( interestRate > 0 ) {
JOptionPane.showMessageDialog( null, interestRate );
}
//else
//throw new InputMismatchException;
}
catch(InputMismatchException exception) {
System.out.println(accountTest.getStackTrace(exception));
}
}//end actionPerformed
}//end TextFieldHandler
}//end GetInterest
ご覧のとおり、値を取得しています。ユーザーは、ゼロ以下の値を入力するかどうかを再度尋ねられます。
しかし、次のものが欠けています。
- それを getInterest メソッドに返し、
- 完了後にウィンドウが消え、
- ユーザーがテキストを入力するとエラーが表示されます。
どうすればそれらを達成できますか。