0

自分のスキルをブラッシュアップするために、簡単な計算機を作りたかったのです。回答フィールドのテキストを設定しようとすると、数値を入力したり、コンソールにエラーが表示されたりする代わりに、これがフィールドに入力されます

java.awt.TextField[textfield0,356,6,52x23,invalid,text=,selection=0-0]

今までそのような問題が発生したことがないので、原因がよくわかりません。これがそのコードです。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class aa extends JFrame implements ActionListener {

static TextField num1 = new TextField(3);
static TextField num2 = new TextField(3);
int numA = 0;
static TextField ans = new TextField(4);
JButton addB = new JButton("+");
JButton subB = new JButton("-");
JButton mulB = new JButton("*");
JButton divB = new JButton("%");

public static void main(String[] args) {
    aa app =new aa();

}

public aa(){
    this.setVisible(true);
    this.setLocationRelativeTo(null);
    this.setSize(500, 400);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    JPanel content = new JPanel(); 
    this.setLayout(new FlowLayout());
    this.add(num1);
    this.add(num2);
    this.add(addB);
        addB.addActionListener(this);
    this.add(subB);
        subB.addActionListener(this);
    this.add(mulB);
        divB.addActionListener(this);
    this.add(divB);
        divB.addActionListener(this);
    this.add(ans);
        ans.setEditable(false);
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == this.addB){
        ans.setText("");
        int x = Integer.parseInt(num1.getText());
        int y = Integer.parseInt(num2.getText());
        numA = x + y;
        System.out.print(numA);
        ans.setText(ans.toString());
    }
    if(e.getSource() == this.subB){
        ans.setText("");
        int x = Integer.parseInt(num1.getText());
        int y = Integer.parseInt(num2.getText());
        numA = x - y;
        System.out.print(numA); //these parts were to make sure that it was actually doing the math, which it was.
        ans.setText("");

    }
    if(e.getSource() == this.mulB){
        ans.setText("");
    }
}
}

どんなアイデアでも大歓迎です。

4

2 に答える 2

4

あなたはTextField#toStringここの結果を見ています

ans.setText(ans.toString());

あなたがしたい

ans.setText(Integer.toString(numA));

JTextFieldまた、一貫性のために Swing を使用することもできます。

于 2013-08-22T19:05:44.790 に答える
0

ansテキストフィールドです。textfield オブジェクトを、textfield のプロパティを出力する文字列に変換しようとしています。文字列に変換numAしてみてください。(すなわちInteger.toString(numA));

于 2013-08-22T19:23:53.663 に答える