完整代码

-----

package com.lfd.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JPanel;

import javax.swing.border.LineBorder;

import com.lfd.common.Operator;

public class View extends JFrame implements ActionListener{

private JMenuBar jmb;

private JMenu jm_view,jm_edit,jm_help;

private JLabel jla_input,jla_show;

private JButton[] jb_oper = new JButton[28];

public View(){

initMenu();

initContent();

this.setTitle("计算器");//设置标题

this.setResizable(false);//不可改变大小

this.setLocationRelativeTo(null);//居中显示

this.setSize(228, 324);//窗体大小,可以使用FastStone Capture的屏幕尺量一下win计算器的大小

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作

}

/**

* 初始化菜单方法

*/

private void initMenu(){

jmb = new JMenuBar();//创建菜单条

jm_view = new JMenu("查看(V)");//查看菜单

jm_view.setMnemonic('V');//设置热键

jm_edit = new JMenu("编辑(E)");//编辑菜单

jm_edit.setMnemonic('E');

jm_help = new JMenu("帮助(H)");//帮助菜单

jm_help.setMnemonic('H');

jmb.add(jm_view);

jmb.add(jm_edit);

jmb.add(jm_help);

this.setJMenuBar(jmb);//将菜单条加入窗体中

}

/**

* 创建内容区域初始化方法

*/

private void initContent(){

//整个窗口区域

JPanel jp = new JPanel();

jp.setLayout(null);

//显示框区域

JPanel jptmp = new JPanel(){

//获取背景图片,使用截图工具从win计算器显示框中截取2像素宽度作为背景

Image bg = new ImageIcon("imgs/bg.png").getImage();

/**

* 填充结果显示区域的背景

*/

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

//x轴平铺满面板

for(int i = 0;i

g.drawImage(bg, i, 0, this);//绘制背景图片

}

}

};

//设置显示框上方小字体

Font font_lab = new Font("arial", Font.BOLD, 22);

jla_input = new JLabel();

jla_input.setText("0");

//设置字体右对齐

jla_input.setHorizontalAlignment(JLabel.RIGHT);

jla_input.setFont(font_lab);

//设置显示框中计算结果的字体

font_lab = new Font("arial", Font.BOLD, 10);

jla_show = new JLabel();

jla_show.setText("sqrt");

//设置字体右对齐

jla_show.setHorizontalAlignment(JLabel.RIGHT);

jla_show.setFont(font_lab);

//设置显示框区域的位置的大小

jptmp.setBounds(14, 15, 190, 50);

jptmp.setLayout(new BorderLayout());

jptmp.add(jla_show,BorderLayout.NORTH);

jptmp.add(jla_input,BorderLayout.CENTER);

//设置边框

jptmp.setBorder(BorderFactory.createLineBorder(new Color(142,156,173)));

jp.add(jptmp);

jptmp = new JPanel();

jptmp.setBounds(14, 72, 196,194);

jptmp.setLayout(null);

Font font_but = new Font("arial", Font.BOLD, 10);//创建按钮字体

for (int i = 0; i < jb_oper.length; i++) {

jb_oper[i] = new JButton(Operator.labs[i]);//设置按钮文字

jb_oper[i].setForeground(new Color(30,57,91));//设置字体颜色

jb_oper[i].setActionCommand(Operator.values()[i].toString());//设置按钮标示

jb_oper[i].setFont(font_but);//设置按钮字体

jb_oper[i].setBounds(i%5*(33+6), i/5*(24+6), 33, 24);//统一33宽,24高,间距6,每5个换一行

jb_oper[i].setBorder(new LineBorder(new Color(135,151,170), 1));//设置按钮边框

jb_oper[i].addActionListener(this);//添加监听器

jptmp.add(jb_oper[i]);

}

jb_oper[24].setBounds(24%5*(33+6), 24/5*(24+6), 33, 24*2+6);//调整等号按钮位置

jb_oper[25].setBounds(25%5*(33+6), 25/5*(24+6), 33*2+6, 24);//调整0按钮的位置

jb_oper[26].setBounds(27%5*(33+6), 26/5*(24+6), 33, 24);//调整.按钮的位置

jb_oper[27].setBounds(28%5*(33+6), 27/5*(24+6), 33, 24);//调整较好按钮的位置

jp.add(jptmp);

this.setLayout(new BorderLayout());

this.add(jp,BorderLayout.CENTER);

}

public static void main(String[] args) {

new View().setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

//TODO 实现逻辑操作

JButton jb = (JButton) e.getSource();

String commond = jb.getActionCommand();

}

}

-----

package com.lfd.common;

public enum Operator{

mC,mR,mS,mAdd,mSubtract,//mc,mr,ms,m+,m-

clBack,clError,clClear,operNegation,operSqrt,//

n7,n8,n9,operDivide,operPer,// /,%,

n4,n5,n6,operMultiply,operReciproc,//*,倒数

n1,n2,n3,operSubtract,operEqu,//-,=

n0,operDot,operAdd;//+

public static final String [] labs = new String[]{

"MC","MR","MS","M+","M-",

"←","CE","C","±","√",

"7","8","9","/","%",

"4","5","6","*","1/x",

"1","2","3","-","=",

"0",".","+"

};

}

java swing计算机_使用java swing仿window7标准计算器界面相关推荐

  1. java打印计算机_在Java程序中实现高精度打印

    在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...

  2. java swing计算机_利用JAVA SWING 编程,要在当前窗体中显示如下信息提示框,则需要编写的代码...

    [单选题]在计算机网络中,通常把提供并管理共享资源的计算机称为 ( ) [单选题]计算机内部存储汉字,使用 ( ) . [单选题]一个ASCII码字符用几个 Byte 表示 () [单选题]运行Wor ...

  3. java swing 空白_关于Java:在Swing GUI中提供空白

    没有空格的GUI显得"拥挤". 如何提供空白而不诉诸显式设置组件的位置或大小? -------------------------------------------------- ...

  4. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...

    一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...

  5. java se  计算机专业技能-Java专项练习(选择题)(三)

    1.关于Java语言的内存回收机制,下列选项中最正确的一项是 Java程序要求用户必须手工创建一个线程来释放内存 Java程序允许用户使用指针来释放内存 内存回收线程负责释放无用内存 内存回收线程不能 ...

  6. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

  7. java flowlayout参数_【Java布局】FlowLayout布局时设定组件大小

    默认的JPanel中,采用的是FlowLayout布局 下面是api中的定义: JPanel(boolean isDoubleBuffered) 创建具有 FlowLayout 和指定缓冲策略的新 J ...

  8. java 画笔粗细_用JAVA做个画笔,有画笔和橡皮功能就行。越简单越好

    展开全部 新建一个java文件,取名叫做PaintJava.java 代码如下: import java.applet.*; import java.awt.*; import java.awt.ev ...

  9. java进度条_自学java你需要知道的,适合编程小白

    1. java学习网站 之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑 Java教程 | 项目实践一站式java学习 这个网站的针对性强 ...

最新文章

  1. HTML在表格右边增加一个表格,如何在表格右侧增加一列
  2. 原生js实现发短信~chat
  3. Java多线程:synchronized关键字和Lock
  4. Openssl asn1parse命令
  5. linux打开bash后报错:~/.bashrc: 没有那个文件或目录
  6. TTL传输中过期的解决办法
  7. python解析apk文件_Python获取apk文件URL地址实例
  8. java单链表查询功能,Java 实现简答的单链表的功能
  9. 百万个小油馕跨越3000公里来支援!西安加油!
  10. AIR通过mx:html访问本地image
  11. Docker-Cgroup 资源配置方法
  12. opencms整合到java项目里_java-将标签云添加到OpenCMS网站
  13. H5移动端页面设计的基础规范
  14. 浅析dToF和iToF
  15. NLP自然语言处理实战(一):利用分词器构建词汇表
  16. Java Socket详解+基础模板+各种常见问题+端口映射
  17. Java 抛出异常【throw】
  18. 最全的Python网站开发库!整理出来了!
  19. 在windows终端中进行复制粘贴的方法
  20. python 文件上传之---断点续传

热门文章

  1. 南京医科大学陈连民组招收博硕士研究生(肠道微生物与心血管代谢健康方向)...
  2. The Innovation | Volume 2 Issue3 正式出版
  3. 不存在_MySQL数据存在就更新,不存在就添加
  4. R语言ggplot2可视化在图像边界内绘制geom_text文本标签实战
  5. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
  6. pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe)
  7. python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
  8. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)、使用sample函数进行数据列随机抽样
  9. Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行
  10. 如何发现数据中的异常值?对异常值是怎么处理的?