作为作业的一部分,我正在尝试从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
正如你所看到的那样,我正在获得价值,并且再次询问用户是否输入了小于或等于零的东西。
但是缺少以下内容:
我怎样才能实现这些目标。
答案 0 :(得分:0)
如果用户输入文字,则显示错误。 k值将是JTextField文本
我用try catch
完成了这个问题public static void main(String[] args) {
String k = "a";
try{
System.out.println(Integer.parseInt(k));
}catch(NumberFormatException ex){
JOptionPane.showConfirmDialog(this, "Is not required data");
}
完成后窗口消失
执行int value = JOptionPane.showMessageDialog( null, interestRate );
方法后,它返回整数。例如,如果您的对话框没有问题,没有,取消,您将获得ok value = 0; ok value = 1;
cancel value =2;
然后你会检查,if value==2
然后关闭框架;
第一个我还不明白
答案 1 :(得分:0)
为什么不简单地按键盘上的字母和符号键?
试试这个代码,它更优雅,更好 只需在JTextField上注册一个keyTyped监听器
private void jTextField1KeyTyped(KeyEvent evt)
{
int x = evt.getKeyChar();
if (x != KeyEvent.VK_BACK_SPACE && x !=KeyEvent.VK_PERIOD) {
if(x ==KeyEvent.VK_PERIOD)
{
if(jTextField7.getText().contains("."))
{
evt.consume();
}
}
if (x < 48 || x > 57) {
evt.consume();
}
}
}
这需要注意用户应该只输入数字,它应该只包含1个小数点
下一个 输入利率后,您将有用户点击的提交按钮 在那里
检查
if(jTextField7.getText().trim().isEmpty())
{
JOptionPane.showMessageDialog(this,"Cannot be left empty","Error",JOptionPane.ERROR_MESSAGE);
return;
}
else
{
Double db= new Double(jTextField7.getText());
{
if(db==0.0)
{
JOptionPane.showMessageDialog(this,"Cannot be Zero","Error",JOptionPane.ERROR_MESSAGE);
return;
}
}
getInterest(jTextField1.getText());
干杯!!