0

課題の一環として、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 メソッドに返し、
  • 完了後にウィンドウが消え、
  • ユーザーがテキストを入力するとエラーが表示されます。

どうすればそれらを達成できますか。

4

2 に答える 2

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());

乾杯!!

于 2012-04-09T10:35:10.417 に答える