我是java的新手,想先建立一个简单的计算器,但我不知道为什么我的代码不起作用!每按一次按钮,文本字段都不会显示结果。 请大家帮帮我吧!
这是我的 代码 :
package com.example.calculator;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Gui implements ActionListener {
double resu = 0;
JTextField tf;
JButton plusb,minusb,mulb,divb,resb;
Gui(){
JFrame jfrm = new JFrame("Calculator");
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setVisible(true);
jfrm.setLayout(new FlowLayout());
jfrm.setResizable(false);
tf = new JTextField(18);
plusb = new JButton("+");
minusb = new JButton("-");
mulb = new JButton("*");
divb = new JButton("/");
resb = new JButton("=");
tf.addActionListener(this);
plusb.addActionListener(this);
minusb.addActionListener(this);
mulb.addActionListener(this);
divb.addActionListener(this);
resb.addActionListener(this);
jfrm.add(tf);
jfrm.add(resb);
jfrm.add(plusb);
jfrm.add(minusb);
jfrm.add(mulb);
jfrm.add(divb);
jfrm.setSize(275, 150);
}
public void actionPerformed(ActionEvent ae){
switch((ae.getSource()).toString()){
case "+" : resu = resu + Integer.parseInt(tf.getText());
tf.setText("");
break;
case "-" : resu = resu - Integer.parseInt(tf.getText());
tf.setText("");
break;
case "*" : resu = resu * Integer.parseInt(tf.getText());
tf.setText("");
break;
case "/" : resu = resu / Integer.parseInt(tf.getText());
tf.setText("");break;
case "=" : tf.setText(String.valueOf(resu));
resu=0;
break;
default : tf.setText("");
break;
}
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Gui();
}
});
}
}
答案 0 :(得分:0)
尝试类似:
int resu = 0;
switch (..) {
case "+":
resu = resu + Integer.parseInt(tf.getText());
break;
...
}
tf.setText("Result is " + resu);
答案 1 :(得分:0)
问题是你不能以这种方式取得按钮的标签,试试这个:
Object o = ae.getSource();
JButton b = null;
String s="";
if(o instanceof JButton)
b = (JButton)o;
if(b != null)
s = b.getText();
现在你以正确的方式接纳运营商。 祝你好运惠特java
答案 2 :(得分:0)
您无法在交换机中获取来源。这将返回JButton。 尝试替换它:
switch((ae.getSource()).toString())
要:
switch(ae.getActionCommand())