1.创建窗口中包含两个文本框和一个命令按钮,用户可在可编辑的文本框中输入数字n,单击命令按钮计算后,另一个不可编辑的文本框显示计算结果1!+2!+…+n!。
public class work2 {
public static void main(String[] args) {
jiecheng jie=new jiecheng();
jie.setBounds(300, 300, 300, 500);
}
}
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class jiecheng extends JFrame {
public JTextField testin;
public JTextField testout;
public JButton button;
public jianshiqi listener;
public jiecheng() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
testin=new JTextField(5);
add(testin);
button=new JButton("经计算");
add(button);
testout=new JTextField(10);
testout.setEditable(false);
add(testout);
listener=new jianshiqi();
listener.setview(this);//将当前窗口的引用传递给监视器
testin.addActionListener(listener);
button.addActionListener(listener);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class jianshiqi implements ActionListener {
jiecheng view;
public void setview(jiecheng view) {
this.view=view;
}
public static int jiecheng(int n){
if(n==1)
return 1;
else
return n*jiecheng(n-1);
}
@Override
public void actionPerformed(ActionEvent e) {
int n,m=0;
String s=view.testin.getText();
try {
n=Integer.parseInt(s);
for(int i=1;i<=n;i++) {
m=m+jiecheng(i);
}
String sr=String.valueOf(m);
view.testout.setText(sr);
} catch (Exception e2) {
// TODO: handle exception
view.testin.setText("请输入数字");
}
}
}
2.编写程序,实现简单的计算器
(1) 用户在窗口中的两个文本框中输入参与运算的两个操作数。
(2) 用户在下拉列表中选择运算符触发ItemEvent,ItemEvent事件的监视器operator(OperatorListener类负责创建)获得运算符,并将运算符传递给ActionEvent事件的监视器computer。
(3) 用户单击按钮触发ActionEvent事件,监视器computer(ComputerListener类负责创建)给出运算结果。
public class work12 {
public static void main(String[] args) {
WindowView view=new WindowView();
view.setBounds(100, 100, 390, 360);
view.setTitle("计算器");
}
}
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class WindowView extends JFrame{
public JTextField innumber1,innumber2;//文本框
public JComboBox<String>choiceFuhao;//下拉列表
public JTextArea textShow;//文本区
public JButton button;//按钮
public OperatorListener operator;//监视ItemEvent事件的监视器
public ComputerListener computer;//监视ActionEvent事件的监视器
public WindowView() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
innumber1=new JTextField(10);
innumber2=new JTextField(10);
choiceFuhao=new JComboBox<String>();
button =new JButton("计算");
choiceFuhao.addItem("选择运算符号:");
String[]a= {"+","-","*","/"};
for(int i=0;i<a.length;i++) {
choiceFuhao.addItem(a[i]);
}
textShow=new JTextArea(9,30);
operator=new OperatorListener();
computer=new ComputerListener();
operator.setView(this);//将当前窗口的引用传递给监视器
computer.setView(this);//将当前窗口的引用传递给监视器
choiceFuhao.addItemListener(operator);//choiceFuhao是事件源,operator是监视器
button.addActionListener(computer);//button是事件源,computer是监视器
add(innumber1);
add(choiceFuhao);
add(innumber2);
add(button);
add(new JScrollPane(textShow));
}
}
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class OperatorListener implements ItemListener {
WindowView view;
public void setView(WindowView view) {
this.view=view;
}
@Override
public void itemStateChanged(ItemEvent e) {
String fuhao=view.choiceFuhao.getSelectedItem().toString();
view.computer.setFuhao(fuhao);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ComputerListener implements ActionListener {
WindowView view;
String fuhao;
public void setView(WindowView view) {
this.view=view;
}
public void setFuhao(String s) {
this.fuhao=s;
}
@Override
public void actionPerformed(ActionEvent e) {
try {
double number1=Double.parseDouble(view.innumber1.getText());
double number2=Double.parseDouble(view.innumber2.getText());
double result=0;
boolean isShow=true;
if(fuhao.equals("+")) {
result=number1+number2;
}else if(fuhao.equals("-")) {
result=number1-number2;
}else if(fuhao.equals("*")) {
result=number1*number2;
}else if(fuhao.equals("/")) {
result=number1/number2;
}else {
isShow=false;
}
if(isShow) {
view.textShow.append(number1+" "+fuhao+" "+number2+"="+result+"\n");
}
} catch (Exception e2) {
// TODO: handle exception
view.textShow.append("\n请输入数字字符\n");
}
}
}