//计算器的框架类--界面类
//导入包
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
//利用继承来创建JFrame
//创建了一个名为CalFrame,属性是JFrame的框架
public class CalFrame extends JFrame {
JTextField jtf = null;
//客户认识工厂了
CalButton cb = new CalButton();
//客户认识工厂
CalTextField ctf = new CalTextField();
//客户认识了工厂
CalService cs = new CalService();
//监听器
ActionListener al = null;
//生成框架--构造方法
CalFrame(){
//super()--调用父类同参构造方法
//用父类构造方法来构造自己
super();
//设置可见性
setVisible(true);
//设置初始化的位置
setLocation(300, 200);
//设置窗口大小
setSize(400,300);
//设置标题
setTitle("计算器");
//设置窗口不可改变大小
setResizable(false);
//设置窗口关闭的方法
setDefaultCloseOperation(EXIT_ON_CLOSE);
//============================================================
//添加元素
//整个JFrame分成两块
//1-文本框
//2-按钮
//将按钮分成3个区域
//1-1X3
//2-5X1
//3-4X5
//=============================================================
//将JFrame分成南北两块
//将文本框放在JFrame的北面
//建立面板-panel--JPanel--jp1
JPanel jp1 = new JPanel();
jp1.setLayout(new BorderLayout(10,1));
//生产文本框
jtf = ctf.getTextField();
//新建文本框并添加到jp1上
//jp1.add(new JTextField(),BorderLayout.NORTH);
jp1.add(jtf,BorderLayout.NORTH);
//将jp1放置到JFrame北面
add(jp1,BorderLayout.NORTH);
//=============================================================
//按钮放到南面
//jp2
JPanel jp2 = new JPanel();
jp2.setLayout(new BorderLayout(10,1));
//jp2.add(new JTextField(),BorderLayout.NORTH);
//创建jp2的字面板
JPanel jp21 = new JPanel();
JPanel jp22 = new JPanel();
JPanel jp221 = new JPanel();
JPanel jp222 = new JPanel();
//生产按钮
JButton[] mButton = cb.getMButton();
JButton[] nButton = cb.getNButton();
JButton[] rButton = cb.getRButton();
//修改相应的panel布局格式
jp221.setLayout(new GridLayout(1,3,0,5));
jp222.setLayout(new GridLayout(4, 5, 0, 5));
jp21.setLayout(new GridLayout(5,1,0,5));
jp22.setLayout(new BorderLayout(0,5));
//将按钮放到相应的panel上
//for-each--当仅需遍历数组而无需访问单独数组元素时
//for( 每一个元素 : 所遍历范围 )
for(JButton b : nButton){
jp222.add(b);
//给nButton中的每一个按钮添加监听器---ActionListner--getActionListener()的返回值
//为什么是new MM,因为每个监听器只监听一个按钮--每个按钮都有独立的监听器
b.addActionListener(getActionListener());
}
//================================
/*
for(int i = 0 ; i < nButton.length; i++){
jp222.add(nButton[i]);
}
*/
//=================================
for(JButton b : rButton){
jp221.add(b);
}
for(JButton b : mButton){
jp21.add(b);
}
//将jp221放到jp22的北面
jp22.add(jp221,BorderLayout.NORTH);
//将jp222放到jp22的南面
jp22.add(jp222,BorderLayout.SOUTH);
//将jp21放到jp2的西面
jp2.add(jp21,BorderLayout.WEST);
//将jp22放到jp2的中间
jp2.add(jp22,BorderLayout.CENTER);
//将jp2放置到JFrame南面
add(jp2,BorderLayout.SOUTH);
//=============================================================
//整理界面元素,填充空白
pack();
}
//====================================================================
//监听器--内部类
/*
private class MouseMonitor extends MouseAdapter{
public void mouseClicked(MouseEvent me){
//获取所点击的按钮的指令字符串
}
}
*/
//监听器--用ActionListener
//用监听方法来实现--生成监听器
public ActionListener getActionListener(){
//生成监听器-赋予它对于相应操作的处理能力
al = new ActionListener(){
//actionPerformed--发生操作时调用
//因为该监听器监听的是按钮--那么发生的操作也就是点击
public void actionPerformed(ActionEvent ae){
//当AE ae的时候--按钮被点击了
//可以得到所点击的按钮的指令字符串
String cmd = ae.getActionCommand();
//将指令传递给CS工厂,工厂生产完毕将产品传递回来,存储在result中
String result = cs.callMethod(cmd,jtf.getText());
jtf.setText(result);
}
};
//得到具有上述功能的监听器
return al;
}
//验证界面
public static void main(String args[]){
CalFrame cf = new CalFrame();
}
}
//导入包
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
//利用继承来创建JFrame
//创建了一个名为CalFrame,属性是JFrame的框架
public class CalFrame extends JFrame {
JTextField jtf = null;
//客户认识工厂了
CalButton cb = new CalButton();
//客户认识工厂
CalTextField ctf = new CalTextField();
//客户认识了工厂
CalService cs = new CalService();
//监听器
ActionListener al = null;
//生成框架--构造方法
CalFrame(){
//super()--调用父类同参构造方法
//用父类构造方法来构造自己
super();
//设置可见性
setVisible(true);
//设置初始化的位置
setLocation(300, 200);
//设置窗口大小
setSize(400,300);
//设置标题
setTitle("计算器");
//设置窗口不可改变大小
setResizable(false);
//设置窗口关闭的方法
setDefaultCloseOperation(EXIT_ON_CLOSE);
//============================================================
//添加元素
//整个JFrame分成两块
//1-文本框
//2-按钮
//将按钮分成3个区域
//1-1X3
//2-5X1
//3-4X5
//=============================================================
//将JFrame分成南北两块
//将文本框放在JFrame的北面
//建立面板-panel--JPanel--jp1
JPanel jp1 = new JPanel();
jp1.setLayout(new BorderLayout(10,1));
//生产文本框
jtf = ctf.getTextField();
//新建文本框并添加到jp1上
//jp1.add(new JTextField(),BorderLayout.NORTH);
jp1.add(jtf,BorderLayout.NORTH);
//将jp1放置到JFrame北面
add(jp1,BorderLayout.NORTH);
//=============================================================
//按钮放到南面
//jp2
JPanel jp2 = new JPanel();
jp2.setLayout(new BorderLayout(10,1));
//jp2.add(new JTextField(),BorderLayout.NORTH);
//创建jp2的字面板
JPanel jp21 = new JPanel();
JPanel jp22 = new JPanel();
JPanel jp221 = new JPanel();
JPanel jp222 = new JPanel();
//生产按钮
JButton[] mButton = cb.getMButton();
JButton[] nButton = cb.getNButton();
JButton[] rButton = cb.getRButton();
//修改相应的panel布局格式
jp221.setLayout(new GridLayout(1,3,0,5));
jp222.setLayout(new GridLayout(4, 5, 0, 5));
jp21.setLayout(new GridLayout(5,1,0,5));
jp22.setLayout(new BorderLayout(0,5));
//将按钮放到相应的panel上
//for-each--当仅需遍历数组而无需访问单独数组元素时
//for( 每一个元素 : 所遍历范围 )
for(JButton b : nButton){
jp222.add(b);
//给nButton中的每一个按钮添加监听器---ActionListner--getActionListener()的返回值
//为什么是new MM,因为每个监听器只监听一个按钮--每个按钮都有独立的监听器
b.addActionListener(getActionListener());
}
//================================
/*
for(int i = 0 ; i < nButton.length; i++){
jp222.add(nButton[i]);
}
*/
//=================================
for(JButton b : rButton){
jp221.add(b);
}
for(JButton b : mButton){
jp21.add(b);
}
//将jp221放到jp22的北面
jp22.add(jp221,BorderLayout.NORTH);
//将jp222放到jp22的南面
jp22.add(jp222,BorderLayout.SOUTH);
//将jp21放到jp2的西面
jp2.add(jp21,BorderLayout.WEST);
//将jp22放到jp2的中间
jp2.add(jp22,BorderLayout.CENTER);
//将jp2放置到JFrame南面
add(jp2,BorderLayout.SOUTH);
//=============================================================
//整理界面元素,填充空白
pack();
}
//====================================================================
//监听器--内部类
/*
private class MouseMonitor extends MouseAdapter{
public void mouseClicked(MouseEvent me){
//获取所点击的按钮的指令字符串
}
}
*/
//监听器--用ActionListener
//用监听方法来实现--生成监听器
public ActionListener getActionListener(){
//生成监听器-赋予它对于相应操作的处理能力
al = new ActionListener(){
//actionPerformed--发生操作时调用
//因为该监听器监听的是按钮--那么发生的操作也就是点击
public void actionPerformed(ActionEvent ae){
//当AE ae的时候--按钮被点击了
//可以得到所点击的按钮的指令字符串
String cmd = ae.getActionCommand();
//将指令传递给CS工厂,工厂生产完毕将产品传递回来,存储在result中
String result = cs.callMethod(cmd,jtf.getText());
jtf.setText(result);
}
};
//得到具有上述功能的监听器
return al;
}
//验证界面
public static void main(String args[]){
CalFrame cf = new CalFrame();
}
}