java swing计算机_使用java swing仿window7标准计算器界面

该博客展示了如何使用Java Swing构建一个仿Windows 7计算器的界面,包括菜单栏、输入显示区和按键布局。通过定义Operator枚举类型来处理不同按钮的功能,并实现了基本的数学运算按钮以及清除、等于等操作。
摘要由CSDN通过智能技术生成

完整代码

-----

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",".","+"

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值