import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//主函数
public class ScienceCalculator {
public static void main(String[] args)
{
try {
UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.err.println("Couldn't use the system look and feel:"+e);
}
EventQueue.invokeLater(new Runnable()
{
public void run()
{
ScienceCalculatorFrame frame=new ScienceCalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
//界面设计
class ScienceCalculatorFrame extends JFrame implements ActionListener
{
public static final int DEFAULT_WIDTH=580;
public static final int DEFAULT_HEIGHT=260;
JMenuItem sItem;
JMenuItem tItem;
JMenuItem copyItem ;
JMenuItem pasteItem;
JMenuItem topHelp;
JMenuItem aboutCal;
JTextArea help;
JScrollPane scrollHelp;
String copy;
JButton buttonBac;
JButton buttonC;
JButton buttonCE;
JButton buttonLeftbracket;
JButton buttonRightbracket;
private JTextField textAnswer;
private boolean start;
private String lastCommand;
private double result;
private ButtonGroup group;
//菜单设计
public ScienceCalculatorFrame()
{
setTitle("计算器");
this.setLocation(400, 300);
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
setResizable(false);
this.setBackground(Color.BLUE);
ScienceCalculatorPanel panel = new ScienceCalculatorPanel();
add(panel);
JMenu viewMenu = new JMenu("查看(V)");
tItem=new JMenuItem("●标准型(T)");
viewMenu.add(tItem);
viewMenu.addSeparator();
sItem = new JMenuItem(" ●科学型(S)");
viewMenu.add(sItem);
viewMenu.addSeparator();
JMenu editMenu = new JMenu("编辑(E)");
copyItem = new JMenuItem(" 复制(C) Ctrl+C");
editMenu.add(copyItem);
editMenu.addSeparator();
pasteItem = new JMenuItem(" 粘贴(V) Ctrl+V");
editMenu.add(pasteItem);
editMenu.addSeparator();
JMenu helpMenu = new JMenu("帮助(H)");
topHelp = new JMenuItem(" 使用方法(H)");
helpMenu.add(topHelp);
helpMenu.addSeparator();
help = new JTextArea(5, 20);
scrollHelp = new JScrollPane(help);
help.setEditable(false);
help.append("执行简单计算\n ");
help.append("1. 键入计算的第一个数字。\n ");
help.append("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n ");
help.append("3. 键入计算的下一个数字。\n ");
help.append("4. 输入所有剩余的运算符和数字。\n ");
help.append("5. 单击“=”。\n ");
aboutCal = new JMenuItem(" 关于计算器");
helpMenu.add(aboutCal);
JMenuBar mainMenu = new JMenuBar();
setJMenuBar(mainMenu);
mainMenu.add(viewMenu);
mainMenu.add(editMenu);
mainMenu.add(helpMenu);
//ActionListener menu = new MenuAction();
tItem.addActionListener(this);
copyItem.addActionListener(this);
pasteItem.addActionListener(this);
topHelp.addActionListener(this);
aboutCal.addActionListener(this);
}
//菜单监听函数
public void actionPerformed(ActionEvent event)
{
Object temp = event.getSource();
if (temp == tItem)
{
//JOptionPane.showMessageDialog(sItem,"当前是标准型计算器, 科学型计算器有待更新。");
this.dispose();
CalculatorFrame cal = new CalculatorFrame();
cal.setVisible(true);
}
if(temp == copyItem )
{
copy = textAnswer.getText();
}
if (temp == pasteItem)
{
textAnswer.setText(copy);
}
if (temp == topHelp)
{
JOptionPane.showMessageDialog(topHelp, scrollHelp,"使用方法",JOptionPane.WARNING_MESSAGE);
}
if (temp == aboutCal)
{
//JOptionPane.showMessageDialog(aboutCal, "简易计算器 \n开发者:胡雪钦 \n版权所有");
JOptionPane.showMessageDialog(aboutCal, "科学计算器 \n开发者:胡雪钦 \n版权所有", "关于计算器",JOptionPane.WARNING_MESSAGE);
}
}
//界面按钮的设计
private class ScienceCalculatorPanel extends JPanel
{
public ScienceCalculatorPanel()
{
setLayout(new BorderLayout());
start = true;
lastCommand = "=";
result = 0;
GridBagLayout layout=new GridBagLayout();
setLayout(layout);
//输出框
textAnswer= new JTextField(37);
textAnswer.setText("0");
textAnswer.setEditable(false);
textAnswer.setHorizontalAlignment(JTextField.RIGHT);
textAnswer.setFont(new Font("Serif",Font.BOLD,17));
textAnswer.setBackground(Color.WHITE);
add(textAnswer,new GBC(0,0,20,1).setFill(GBC.BOTH));
JPanel n1= new JPanel();
group = new ButtonGroup();
n1.setBorder(BorderFactory.createEtchedBorder());
//addRadioButton("度",BorderFactory.createLoweredBevelBorder());
JRadioButton buttona = new JRadioButton("度",true);
JRadioButton buttonb = new JRadioButton("弧度");
JRadioButton buttonc = new JRadioButton("梯度");
group.add(buttona);
group.add(buttonb);
group.add(buttonc);
n1.setLayout(new GridLayout(1,3));
n1.add(buttona);
n1.add(buttonb);
n1.add(buttonc);
add(n1,new GBC(0,1,5,1).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonSpace = new JButton(" ");
add(buttonSpace,new GBC(0,2).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonINV = new JButton("INV");
add(buttonINV,new GBC(1,2).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonLn= new JButton(" ln ");
add(buttonLn,new GBC(2,2).setAnchor(GBC.EAST).setFill(GBC.BOTH));
buttonLeftbracket = new JButton("(");
add(buttonLeftbracket,new GBC(3,2).setAnchor(GBC.EAST).setFill(GBC.BOTH));
buttonRightbracket = new JButton(")");
add(buttonRightbracket,new GBC(4,2).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonInt = new JButton(" Int ");
add(buttonInt,new GBC(0,3).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonSinh = new JButton("sinh");
add(buttonSinh,new GBC(1,3).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonSin= new JButton(" sin");
add(buttonSin,new GBC(2,3).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonSquare = new JButton("x^2");
add(buttonSquare,new GBC(3,3).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonL = new JButton("n!");
add(buttonL,new GBC(4,3).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonDms = new JButton(" dms ");
add(buttonDms,new GBC(0,4).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonCosh = new JButton("cosh");
add(buttonCosh,new GBC(1,4).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonCos= new JButton(" cos");
add(buttonCos,new GBC(2,4).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonX = new JButton("x^y");
add(buttonX,new GBC(3,4).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonXSqrt = new JButton("y√x");
add(buttonXSqrt,new GBC(4,4).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonPI = new JButton(" π ");
add(buttonPI,new GBC(0,5).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonTanh = new JButton("tanh");
add(buttonTanh,new GBC(1,5).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonTan= new JButton("tan");
add(buttonTan,new GBC(3,5).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonCube = new JButton("x^3");
add(buttonCube,new GBC(4,5).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton button3Sqrt = new JButton("y√x");
add(button3Sqrt,new GBC(2,5).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonFE = new JButton("F-E ");
add(buttonFE,new GBC(0,6).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonExp = new JButton("Exp");
add(buttonExp,new GBC(1,6).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonMOD= new JButton("Mod");
add(buttonMOD,new GBC(3,6).setAnchor(GBC.EAST).setFill(GBC.BOTH));
JButton buttonLog = new JButton("log");

DreamNextStop
- 粉丝: 2
- 资源: 5
最新资源
- 基于Go语言的股票分析及行情获取设计源码
- 基于模型预测控制的主动悬架系统优化与性能分析:从2自由度到4自由度模型的深度研究,含路面预瞄功能 ,基于模型预测控制的主动悬架系统优化与性能分析:从2自由度到4自由度模型的深度研究,含路面预瞄功能
- 基于Go语言的智能CICD一体化解决方案服务平台设计源码
- 通信原理SystemView软件下的16QAM调制与解调系统仿真实验报告(含星座图与功率谱分析),SystemView下短波16QAM调制与解调系统仿真研究:波形分析与星座图解读,通信原理 syste
- 基于springboot + vue + 百度SDK 开发的前后端分离人脸识别会议签到系统新版源码+说明.zip
- 基于Qt框架的手势识别新版程序源码+说明.zip
- 基于Java的Apollo项目开发设计源码
- 基于Rasa框架实现的智能医疗机器人.zip
- 帮助爬虫通过点选验证及滑动验证, 验证码识别(仅用于测试学习).zip
- Baidu文字识别Api封装代码.zip
- 基于SMIC 55nm工艺的锁相环学习电路设计教程:上手容易,理论结合实践指导学习,锁相环学习电路教程:Ring-VCO结构,800MHz/1GHz输出,新手友好,完整项目展示与仿真资料赠送,锁相环学
- Baidu云流式语音识别客户端 SDK.zip
- 毕业设计基于Opencv的车牌识别系统.zip
- 基于Vue框架的小狗漫画网页设计源码
- 本地识别模型下载.zip
- 通过短视频SDK、直播SDK轻松实现特效与视频剪辑.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


