2 Star 0 Fork 0

派头子 / 结对编程

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
calframe.java 4.80 KB
一键复制 编辑 原始数据 按行查看 历史
派头子 提交于 2018-03-21 19:24 . 计算器图形界面部分
package testCal;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* 界面对象
*/
public class CalFrame extends JFrame {
private JTextField textInput = null;// 显示计算结果
private String[] resetOp = { "BS", "C", "Sqrt","+/-" };//
private String[] numCalOp = { "7", "8", "9", "/", "4", "5", "6", "*", "1",
"2", "3", "-", ".", "0", "=", "+" };// 用数组保存
private ButtonAction buttonAction = new ButtonAction();
private ActionListener actionListener = null;//定义监听器
public static final int FIELD_WGAPS = 0;
public static final int FIELD_HGAPS = 0;
public static final int PRE_WIDTH = 550;
public static final int PRE_HEIGHT = 650;//定义面板基本数据
public CalFrame() {
init();
}
private void init() {
this.setTitle("精仿iphone计算器");
this.setResizable(true);//设置窗口体大小可变
// 主面板
JPanel mainPanel = new JPanel();//创建一个容器类的面板
// 输入框面板
mainPanel.setLayout(new BorderLayout(FIELD_HGAPS,FIELD_WGAPS));//设置文本框边界的尺寸
mainPanel.add(getTextField(), BorderLayout.NORTH);//将计算结果放在整个面板的北部
mainPanel.setPreferredSize(new Dimension(PRE_WIDTH,PRE_HEIGHT));//设置计算器大小
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new BorderLayout(5, 1));//建立一个中部面板
JButton[] resetButton = getRButton();//通过getRButton()这个方法来保存按钮对象的数组
JPanel northPanel = new JPanel();
northPanel.setPreferredSize(new Dimension(50,50));//设置面板大小
northPanel.setLayout(new GridLayout(1, 3, 0, 0));//设置面板格式
for (JButton b : resetButton)//遍历JButton型数组resetBotton 每一次访问数组的时候读取的数据放入JButton型的b中。
{
northPanel.add(b);//将数组的元素加到新建的面板中
}//建立新面板以及增加 “BS”,"C","Sqrt","+/-"等按钮
JButton[] numButton = getNButton();
JPanel toCenterPanel = new JPanel();
toCenterPanel.setPreferredSize(new Dimension(20,20));//设置面板大小
toCenterPanel.setLayout(new GridLayout(4, 4, 0, 0));//设置面板格式
for (JButton b : numButton) {
toCenterPanel.add(b);
}//建立新面板及增加数字键及运算符按钮
centerPanel.add(northPanel, BorderLayout.NORTH);
centerPanel.add(toCenterPanel, BorderLayout.CENTER);
mainPanel.add(centerPanel, BorderLayout.CENTER);
this.add(mainPanel);//将做好的各部分小面板整合到大面板中
}
public ActionListener getActionListener() {
if (actionListener == null)
{
actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String buttonText = e.getActionCommand();//区分不同的按钮,避免发生冲突
String result = null;//假设运算结果为空
try {
result = buttonAction.buttonMethod(buttonText,
textInput.getText());
} catch (Exception e1) {
System.out.println(e1.getMessage());
}//捕获异常
if (result != null) {
textInput.setText(result);//把输出结果定为result
}
}
};
}
return actionListener;//返回监听器的对象并执行相关的方法
}//增加事件监听器
private JTextField getTextField() {
if (textInput == null) {
textInput = new JTextField("0");//初始值定义为0
textInput.setEditable(false);//输入框不可被编辑(仅允许复制粘贴)
textInput.setBackground(new Color(0,0,0));//设置输出背景框颜色为黑色
textInput.setForeground(new Color(255,255,255));//设置输出字体颜色为白色
textInput.setHorizontalAlignment(JTextField.RIGHT);//向右边开始对齐
textInput.setFont(new Font("宋体", Font.BOLD, 50));//设置字体样式为宋体,加粗,像素为50
}
return textInput;
}//输入框的初始化
private JButton[] getRButton() {
JButton[] result = new JButton[resetOp.length];
for (int i = 0; i < this.resetOp.length; i++) {
JButton b = new JButton(resetOp[i]);//完成各个按钮的匹配
if(i==3)
{
b.setBackground(new Color(250,128,10));//背景为橙色
b.setForeground(new Color(255,255,255));//字体为白色
}//判断是否为最右边那个按钮
else
{
b.setBackground(new Color(233,233,216));
}//其他按钮设置为银灰色
b.setFont(new Font("宋体", Font.BOLD, 16));//设置字体格式
b.addActionListener(getActionListener());//设置监听
result[i] = b;
}
return result;
}//获取按钮以及按钮属性的设置
private JButton[] getNButton() {
String[] calButton = { "/", "*", "-", "+", "=" };
JButton[] result = new JButton[numCalOp.length];
for (int i = 0; i < numCalOp.length; i++) {
JButton b = new JButton(numCalOp[i]);
if(i==3||i==7||i==11||i==15)
{
b.setBackground(new Color(250,128,10));//设置背景颜色
b.setForeground(new Color(255,255,255));//设置字体颜色
}//判断是不是最右边的按钮
b.setFont(new Font("宋体", Font.BOLD, 16));//设置字体格式
b.addActionListener(getActionListener());//注册监听器
Arrays.sort(calButton);
result[i] = b;//添加运算规则
}
return result;
}
}
Java
1
https://gitee.com/paitouzi/pair_programming.git
git@gitee.com:paitouzi/pair_programming.git
paitouzi
pair_programming
结对编程
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891