java swing计算机_使用java swing仿window7标准计算器界面
完整代码
-----
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标准计算器界面相关推荐
- java打印计算机_在Java程序中实现高精度打印
在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...
- java swing计算机_利用JAVA SWING 编程,要在当前窗体中显示如下信息提示框,则需要编写的代码...
[单选题]在计算机网络中,通常把提供并管理共享资源的计算机称为 ( ) [单选题]计算机内部存储汉字,使用 ( ) . [单选题]一个ASCII码字符用几个 Byte 表示 () [单选题]运行Wor ...
- java swing 空白_关于Java:在Swing GUI中提供空白
没有空格的GUI显得"拥挤". 如何提供空白而不诉诸显式设置组件的位置或大小? -------------------------------------------------- ...
- java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...
- java se 计算机专业技能-Java专项练习(选择题)(三)
1.关于Java语言的内存回收机制,下列选项中最正确的一项是 Java程序要求用户必须手工创建一个线程来释放内存 Java程序允许用户使用指针来释放内存 内存回收线程负责释放无用内存 内存回收线程不能 ...
- java 图片效果_使用Java进行图片底片化效果处理
使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...
- java flowlayout参数_【Java布局】FlowLayout布局时设定组件大小
默认的JPanel中,采用的是FlowLayout布局 下面是api中的定义: JPanel(boolean isDoubleBuffered) 创建具有 FlowLayout 和指定缓冲策略的新 J ...
- java 画笔粗细_用JAVA做个画笔,有画笔和橡皮功能就行。越简单越好
展开全部 新建一个java文件,取名叫做PaintJava.java 代码如下: import java.applet.*; import java.awt.*; import java.awt.ev ...
- java进度条_自学java你需要知道的,适合编程小白
1. java学习网站 之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑 Java教程 | 项目实践一站式java学习 这个网站的针对性强 ...
最新文章
- HTML在表格右边增加一个表格,如何在表格右侧增加一列
- 原生js实现发短信~chat
- Java多线程:synchronized关键字和Lock
- Openssl asn1parse命令
- linux打开bash后报错:~/.bashrc: 没有那个文件或目录
- TTL传输中过期的解决办法
- python解析apk文件_Python获取apk文件URL地址实例
- java单链表查询功能,Java 实现简答的单链表的功能
- 百万个小油馕跨越3000公里来支援!西安加油!
- AIR通过mx:html访问本地image
- Docker-Cgroup 资源配置方法
- opencms整合到java项目里_java-将标签云添加到OpenCMS网站
- H5移动端页面设计的基础规范
- 浅析dToF和iToF
- NLP自然语言处理实战(一):利用分词器构建词汇表
- Java Socket详解+基础模板+各种常见问题+端口映射
- Java 抛出异常【throw】
- 最全的Python网站开发库!整理出来了!
- 在windows终端中进行复制粘贴的方法
- python 文件上传之---断点续传
热门文章
- 南京医科大学陈连民组招收博硕士研究生(肠道微生物与心血管代谢健康方向)...
- The Innovation | Volume 2 Issue3 正式出版
- 不存在_MySQL数据存在就更新,不存在就添加
- R语言ggplot2可视化在图像边界内绘制geom_text文本标签实战
- R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
- pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe)
- python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
- pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)、使用sample函数进行数据列随机抽样
- Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行
- 如何发现数据中的异常值?对异常值是怎么处理的?