import javax.swing.*;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* This class is to create a calculator GUI.
*
* @author DuChenyang
* @version 2022/6/1 1.2.0
*/
public class CalculatorGUI {
private JTextField textField;
private GridLayout gridLayout;
private JButton buttons[][];
private Panel buttonPanel;
private String front = "", behind = "";
private String result = null;
private String opCode = null;
private boolean pointFlag = false;
private boolean opFlag = false;
private boolean equalFlag = false;
/**
* The string array about buttons
*/
String[][] names = { { "1", "2", "3", "+" }, { "4", "5", "6", "-" }, { "7", "8", "9", "×" }, { ".", "0", "=", "÷" } };
private Color colorTitle = new Color(173, 216, 230);
private Color colorContent = new Color(255 ,255, 240);
private Color colorButton = new Color(0 ,206, 209);
private Color colorText = new Color(255 ,248 ,220);
private Dimension textFieldSize = new Dimension(0,60);
private Dimension frameSize = new Dimension(400,300);
public CalculatorGUI() {
/**
* define the layout type
*/
gridLayout = new GridLayout(4,0);
gridLayout.setHgap(5); //set the horizontal gap
gridLayout.setVgap(5); //set the vertical gap
/**
* Create the button panel
*/
buttonPanel = new Panel();
buttonPanel.setLayout(gridLayout);
/**
* Component -----Button
*/
buttons = new JButton[4][4];
/**
* Use nested loop to set value.
*/
for (int row = 0; row < names.length; row++) {
for (int col = 0; col < names.length; col++) {
//Create the field of button
buttons[row][col] = new JButton(names[row][col]);
//Set the color of the buttons
buttons[row][col].setBackground(colorButton);
//Add the button to buttonPanel
buttonPanel.add(buttons[row][col]);
if( row<3 && col<3 ) {
buttons[row][col].addActionListener(new NumberListener());
}
else if(col == 3) {
buttons[row][col].addActionListener(new SignListener());
}
}
}
buttons[3][1].addActionListener(new NumberListener());
buttons[3][0].addActionListener(new SignListener());
buttons[3][2].addActionListener(new SignListener());
/**
* Component -----textField
*/
textField = new JTextField();
//Set the size of the textField
textField.setPreferredSize(textFieldSize);
//Set the color of the text fields
textField.setBackground(colorText);
//Set the font of the text fields
textField.setFont(new Font("宋体",Font.BOLD,20));
}
/**
* a series of operators about frame.
*/
public void launchFrame() {
/**
* Create the frame and add the splitPane
*/
JFrame frame = new JFrame("Calculator");
/**
* Add component to the frame
*/
frame.getContentPane().add(textField, BorderLayout.NORTH);
frame.getContentPane().add(buttonPanel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//set the frame size
frame.setSize(frameSize);
/**
* decorate the frame color of the window
*/
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
/**
* Create Self-defining theme
*/
MetalLookAndFeel.setCurrentTheme(new MyDefaultMetalTheme());
try {
UIManager.setLookAndFeel(new MetalLookAndFeel());
} catch (Exception e) {
e.printStackTrace();
}
/**
* Set the self-defining theme to the frame.
*/
SwingUtilities.updateComponentTreeUI(frame);
//Set the frame visible
frame.setVisible(true);
}
public static void main(String args[]) {
CalculatorGUI chatClient = new CalculatorGUI();
chatClient.launchFrame();
}
class Calculator{
private double frontNum = Double.valueOf(front);
private double behindNum = Double.valueOf(behind);
private double resultNum = 0;
public void opAdd() {
resultNum = frontNum + behindNum;
}
public void opSubtract() {
resultNum = frontNum - behindNum;
}
public void opMultiply() {
resultNum = frontNum * behindNum;
}
public void opDivide() {
resultNum = frontNum / behindNum;
}
public void opEqual() {
if(opCode.equals("+")) {
opAdd();
}
else if (opCode.equals("-")) {
opSubtract();
}
else if (opCode.equals("×")) {
opMultiply();
}
else {
opDivide();
}
if(opCode.equals("÷") && behindNum == 0) {
result = "Wrong in division!";
}
else {
result = String.valueOf(resultNum);
}
opCode = null;
}
}
class NumberListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
textField.setText(e.getActionCommand());
if(opFlag == false) {
if(equalFlag == true) {
front = "";
behind = "";
equalFlag = false;
}
if(pointFlag == false)
front += e.getActionCommand();
else {
front = front +"." +e.getActionCommand();
pointFlag = false;
}
textField.setText("Front number : "+front);
}
else {
if(equalFlag == true) {
behind ="";
front = result;
equalFlag = false;
}
if(pointFlag == false) {
behind += e.getActionCommand();
}
else {
behind = behind +"." +e.getActionCommand();
pointFlag = false;
}
textField.setText("Behind number : "+behind);
opFlag = false;
}
}
}
class SignListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand() == ".") {
pointFlag = true;
}
else if(e.getActionCommand() == "=") {
Calculator calculator = new Calculator();
calculator.opEqual();
equalFlag = true;
textField.setText("Result : " + result);
}
else {
opCode = e.getActionCommand();
opFlag = true;
}
}
}
/**
* Create a Self-defining theme
*
* extend DefaultMetalTheme class
*
*/
class MyDefaultMetalTheme extends DefaultMetalTheme {
/**
* These three methods is to set the color of the window title
*/
public ColorUIResource getWindowTitleInactiveBackground() {
return new ColorUIResource(colorTitle);
}
public ColorUIResource getWindowTitleBackground() {
return new ColorUIResource(colorTitle);
}
public ColorUIResource getPrimaryControlHighlight() {
return new ColorUIResource(colorTitle);
}
/**
* This method is to set the color of the frame.
*/
public ColorUIResource getPrimaryControlDarkShadow() {
return new ColorUIResource(colorTitle);
}
/**
* This method is to set the color of the control button.
*/
public ColorUIResource getPrimaryControl() {
return new ColorUIResource(colorTitle);
}
/**
* These three methods is to set the color of the window Content.
*/
public ColorUIResource getControlHighlight() {
return new ColorUIResource(colorContent);
}
public ColorUIResource getControlDarkShadow() {
return new ColorUIResource(colorContent);
}
public ColorUIResource getControl() {
return new ColorUIResource(colorContent);
}
}
}
相关推荐
【亲测】ubuntu20.4 安装CUDA11.8
一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境
【JAVA项目】实现完美计算器
这个计算器几乎完美,可以计算你输入的任何表达式,不管多么复杂!并且拥有很多功能!
MATLAB实战:纯电动汽车动力性仿真从入门到精通(附完整代码)
本文提供了一份基于MATLAB的纯电动汽车动力性仿真从入门到精通的实战指南。通过理论建模与代码实战相结合,详细讲解了如何构建行驶阻力模型、驱动力平衡方程,并利用MATLAB脚本完整实现了最高车速、加速时间和最大爬坡度三大核心性能指标的仿真计算。文章附有完整代码,帮助工程师快速掌握纯电动汽车动力性仿真的核心技能,为设计与优化提供高效的数字工具。
java实现简易计算器
Java简易计算器 用java语言写的一个简易计算器,实现了最基本的+、-、*、/ 运算。 先来看卡效果: 布局很简单,整个面板的组件为一个JText
三维跨孔电磁波CT数据可视化框架搭建
利用matlab实现对跨孔电磁波CT实测数据反演,并搭建了三维CT数据可视化框架,可装填实测CT反演数据。
Benchmark系列——基本概念和分类
本文主要介绍了Benchmark的基本概念和分类情况。
Java声效计算器(带有十进制转二进制和十六进制的功能)
@TOC Java声效计算器(带有十进制转二进制和十六进制的功能) 声明: 这是我们学校老师布置的一次期末课设,要是只靠在课堂上学的知识是不可能完成这个课设的,做这个课设,我在课下看了一些关于Java用户图形界面的书,我又结合北大教授的讲课的内容,完成了这次课设。我对比较难理解的代码和重要代码已经注释,如果我有哪一部分写的不明白的地方请大家在评论区留言。 设计思路: 首先运用swing.JFr...
告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真
本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。
十六进制 java,Java十六进制计算
I have the long value bits declared like so:long bits = len*8L; (304)System.out.println(bits); This outputs as 304If I use the long name bits like so I get 0 & 0 respectively.System.out.println(bi...
小智AI语音控制实战:从工具注册到音量调节的MCP交互全流程
本文详细拆解了基于小智AI与MCP协议实现本地智能语音控制的完整交互流程。以ESP32平台为例,从开发环境搭建、MCP服务器初始化、工具注册,到用户语音指令的接收、解析、硬件执行与结果反馈,提供了全链路实战代码。重点阐述了如何通过MCP协议将AI的意图理解与设备功能执行在本地高效耦合,实现毫秒级响应的音量调节等控制,为嵌入式AI开发者提供了清晰的实现路径。
【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理
【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理
Java简单GUI:简单计算器、菜单、注册界面
JAVA随堂作业:简单GUI的实现,包括简单计算器、多级菜单、简易注册界面。本人一直想找时间系统整理一下之前做过的一些实验,便于后续用到的时候可以尽快的使用,po出来也便于大家交流学习,有问题欢迎交流指正,与诸君共勉!
SAP 系统里生成 PDF 的几条主干路径:从 Spool 转换到 Adobe 原生渲染,再到 BTP 云服务
本文系统梳理了SAP生态中PDF生成的多种技术方案,包括Spool转换、OTF转换、Smart Forms/Adobe Forms原生生成以及云端服务等不同路径。文章通过实际案例和代码示例,详细分析了各方案的适用场景、技术要点和工程实践建议,特别强调了多语言支持、字体处理、性能优化等关键因素。针对不同业务需求,提供了从简单导出到复杂交互式PDF的完整解决方案框架,为SAP环境下的PDF处理提供了实用指南。
GUI:简易计算器设计
目录一.界面设计二.功能设计 三.代码实现 四.注意事项设计计算器界面时,首先需要建立一个Frame容器,作为显示窗口,之后的界面设计即围绕在该显示窗口中添加功能组件来进行后续操作。在显示窗口上,可将该界面分为两部分,第一部分即为最上方的文本域组件,用于显示要进行计算的式子,所有的计算式与最终结果均在此文本域中显示。第二部分即为下方的按钮组件,在实现下方的按钮组件,设计思路为,新建若干个Panel容器,将其设置为FlowLayout分布式,以行为单位添加每一行的按钮组件,最后采用Box容器,向其添加之前新建
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
JavaFx实例2:制作简单的计算器【Create a Calculator GUI】
利用javaFx制作简易计算器,讲解详细,不容错过哦~
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
java 做的简易进制计算器
import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Scale { JFrame f; JPanel [] p=new JPanel[4]; JButton [] c=new JButton[13]; JLabel [] t=new JLabel[2]; JTextField []
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
用java编写简单的计算器_JAVA编写的一个简单的计算器
做的项目里面有一个是计算器的。做得比较简单,只是普通的加减乘除等于小数点负号删除退格等,其他功能如科学计算、进制转换,其实难度也不大,就是懒得去弄那些。整个程序可以说是自己独立完成的吧,因为没什么花哨,无非就是运算时条件多弄点,让程序不出BUG。周末在家设置了一下字体和输入框,搞大了点,看着也舒服了点。当然,这界面很普通,没啥特色。整个代码也没啥特色,刚开始写了些,其他的就复制,回来才发现代码太多...
Java编写进制转换器
Java编写进制转换器
[Java] 一个十进制转十六进制计算器
用来算透明度的。省的每次都要笔算- - import java.util.Scanner; public class HexCalculator { public static final int HEX = 16; public static void main(String[] args) { Scanner in = new Scanner(System.in); Sys...
GUI之计算器简单版
实验四 GUI实验 一、实验目的 练习面向对象的图形用户界面设计、界面布局、事件设计方法。 二、实验内容 Eclipse安装Windowsbuilder,创建图形用户界面设计的窗口以及设计框,通过在design窗口拖动按钮组件,source中自动生成相应代码,以此达成图形用户界面设计,以及通过不同模板,然后自己拖动进行界面布局,设计自己想要的计算器样式,最后对于每一个事件都可以设计方法...
java GUI 简单计算器实现
用java语言GUI实现计算器,基本功能都实现,但没能实现运算度的优先级运算
Calculator GUI Work(Version T1)
从大一开始就有人做计算器,那时候由于对gui不太熟悉,再加上当时认为算法自己理解地不是很透彻,所以没有自己做过。最近一直想努力做好gui,所以做了一个计算器的gui。 这篇文章来实例自己如何一步一步没话界面,有好建议的希望提出来。 首先,上version 1: 代码: import javax.swing.*; import java.awt.*; import...
gui 设计的简单计算器 java_利用java做一个简单的计算器
共两个类。还只是完成+、-、×、÷运算而已。GUI只是用了AWT,很简单,相信一看就能懂了。Calculator.javapublicclassCalculator{privateStringresult="0";privateintop=0,add=1,sub=2,mul=3,div=4;privatedoublestringToDouble(String...
Java GUI做简易计算器
貌似逻辑有点问题,界面还能用,凑合着看吧。。有空再改。。package calculator;/*公共类:calculator 功能:计算器界面 版本:1.0 Bill 2015 11 28 实现了计算器界面布置,准备加入事件 2.0 Bill 2015 12 2 计划加入监听事件,实现按键功能
Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用
由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。
V8 机制、手写核心函数与 TypeScript 类型体操
或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",
3894



被折叠的 条评论
为什么被折叠?



