计算器
(1) 使用javax.swing包中的组建JFrame,JTextField,JComboBox,JButton完成以下界面的设计;
(2) 功能为用户可以在文本框1(在窗体左边)和文本框2(在窗体中间)中输入数字,然后在下拉列表框中选择需要计算的符号即加减乘除的符号,当用户单击“=”号按钮时,在最右边的文本框中显示结果,当单击清除按钮时,可以把所有文本框的内容都清空。要求单击等号按钮时若文本框1或者文本框2内容为空,则弹出对话框提示用户“请在文本框中输入数字”;
(3) 将每次计算的算式及结果保存在磁盘中,保存位置未该项目的根目录下。
package tanyuang;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class jisuanqi {
public static void main(String[] args) {
JFrame win = new WindowActionEvent4();//创建窗口,JFrame创建一个无标题的窗口
win.setBounds(100, 100, 500, 400);//设置窗口的初始位置
}
}
class WindowActionEvent4 extends JFrame{
JTextField text;//设置文本框
JTextField text2;//设置文本框
JComboBox fuhao;//设置下拉列表
JButton button;//设置按钮
JTextArea result;//设置文本区
ButtonListen4 buttonListener;//设置监视器
public WindowActionEvent4(){
setLayout(new FlowLayout());//布局
text = new JTextField(10);//文本框大小
text2 = new JTextField(10);//文本框大小
fuhao = new JComboBox();
fuhao.addItem("运算符号:");
String[] a = { "+", "-", "*", "/" };
for (int i = 0; i < a.length; i++) {
fuhao.addItem(a[i]);
}
button = new JButton("确定");
result = new JTextArea(10,30);
add(text);
add(fuhao);
add(text2);
add(button);
add(new JScrollPane(result));//设置滚动窗格
buttonListener = new ButtonListen4();//设置监测器
buttonListener.setText(text);
//2.窗口中,设置监听器中的result为窗口中result
buttonListener.setResult(result);
buttonListener.setText2(text2);
buttonListener.setFuhao(fuhao);
button.addActionListener(buttonListener);//注册监视器
setVisible(true);//设置的窗口是否可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置的窗口结束窗口所在的应用程序
}
}
class ButtonListen4 implements ActionListener {
//设置其他组件中数据
//1.监听器中,添加其他组件为成员变量,set方法,接收相应组件数据
JTextField text;
JTextField text2;
JComboBox fuhao;
public void setText2(JTextField text2) {
this.text2 = text2;
}
public void setFuhao(JComboBox fuhao) {
this.fuhao = fuhao;
}
JTextArea result;
public void setResult(JTextArea result) {
this.result = result;
}
public void setText(JTextField text) {
this.text = text;
}
@Override
public void actionPerformed(ActionEvent e) {
//3.监听器的功能响应函数中, 通过组件的append(),设置文本区内容
String strf=fuhao.getSelectedItem().toString();
double number1 = Double.parseDouble(text.getText());
double number2 = Double.parseDouble(text2.getText());
double r = 0;
if (strf.equals("+")) {
r = number1 + number2;
} else if (strf.equals("-")) {
r = number1 - number2;
} else if (strf.equals("*")) {
r = number1 * number2;
} else if (strf.equals("/")) {
r = number1 / number2;
}
result.append(number1 + " " + strf + " " + number2 + "=" + r + "\n");
}
}