作为作业的一部分,我试图从 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 方法,
- 完成后窗口消失,
- 如果用户输入文本,则显示错误。
我怎样才能实现这些。