实验十一:图形界面二

实验程序如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Example1 extends JFrame {
 private int add=1,sub=2,mul=3,div=4;
 private int op=0;
 boolean ifOp;
 private String output="0";
 private Button[] jba=new Button[]{
 new Button("7"),new Button("8"),new Button("9"),new Button("+"),
 new Button("4"),new Button("5"),new Button("6"),new Button("-"),
 new Button("1"),new Button("2"),new Button("3"),new Button("*"),
 new Button("0"),new Button("."),new Button("="),new Button("/")};
 private JPanel jpt=new JPanel();
 private JPanel jpb=new JPanel();
 private JTextField jtf=new JTextField("");
 private Example1(){
  jpt.setLayout(new BorderLayout());
  jpt.add(jtf);
  this.add(jpt,BorderLayout.NORTH);
  jpb.setLayout(new GridLayout(4,4));
  for(int i=0;i<jba.length;i++){
  jpb.add(jba[i]);
  if(i==3||i==7||i==11||i==15||i==14)
  jba[i].addActionListener(new setOperate_Act());
  else
  jba[i].addActionListener(new setLabel_Act());
  }
  this.add(jpb,BorderLayout.CENTER);
  this.setSize(200, 200); 
  this.setResizable(false);
  this.setVisible(true);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 private void operate(String x){double x1=Double.valueOf(x);
 double y=Double.valueOf(output);
 switch(op){
 case 0:output=x;break;
 case 1:output=String.valueOf(y+x1);break;
 case 2:output =String.valueOf(y-x1);break;
 case 3:output =String.valueOf(y*x1);break;
 case 4:
 if(x1!=0) output=String.valueOf(y/x1);
 else output="不能为0";
 break;
 }
 }
 public String add(String x){
 operate(x);
 op=add;
 return output;
 }
 public String subtract(String x){
  operate(x);
  op=sub;
 return output;
 }
 public String multiply(String x){
  operate(x);
  op=mul;
 return output;
 }
 public String divide(String x){
  operate(x);
  op=div;
 return output;
 }
 public String Equals(String x){
  operate(x);
  op=0;
 return output;
 }
 public void opClean(){
  op=0;
  output="0";
 }
 class setOperate_Act implements ActionListener{
  public void actionPerformed(ActionEvent e) {
  if(e.getSource()==jba[3]){
  jtf.setText(add(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[7]){
  jtf.setText(subtract(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[11]){
  jtf.setText(multiply(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[15]){
  jtf.setText(divide(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[14]){
  jtf.setText(Equals(jtf.getText()));
  ifOp=true;
  }
  }
  }
  class setLabel_Act implements ActionListener{
  public void actionPerformed(ActionEvent e) {
  Button tempb=(Button)e.getSource();
  if(ifOp){
  jtf.setText(tempb.getLabel());
  ifOp=false;
  }else {
  jtf.setText(jtf.getText()+tempb.getLabel());
  }
  }
  }
 
 public static void main(String[] args) {
  new Example1();
 }
}

转载于:https://www.cnblogs.com/Y-CQ/p/11000285.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash)

Elasticsearch 是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c;restful风格接口&#xff0c;多数据源&#xff0c;自动搜索负载等。 Logstash 是一个完…

阿里P8面试官都说太详细了,面试资料分享

背景 知乎客户端中有一个自己维护的 Hybrid 框架&#xff0c;在此基础上开发了一些 Hybrid 页面&#xff0c;当需要前端或者客户端开发接口的时候&#xff0c;就涉及到联调的问题。 和一般的 前端 <> 服务端&#xff0c;或者 客户端 <> 服务端 类似&#xff0c;前…

virtual和override

偶然间看到的题&#xff0c;借此记录。 class Program{static void Main(string[] args){D d new D(); //第一个D是申明类&#xff0c;第二个D是实例类A a d;B b d;C c d;a.F();b.F();c.F();d.F();}class A{public virtual void F() { Console.WriteLine("A.F")…

阿里内部资料!如何试出一个Android开发者真正的水平?系列教学

前言 马爸爸总结了一句话&#xff1a;跳槽&#xff0c;要么是钱不到位&#xff0c;要么是受了委屈。 我给自己这次的跳槽经历做了一个分析&#xff0c;希望能对那些想换工作的朋友有所帮助。 许多朋友想换工作&#xff0c;但是对“换工作”的理解可能仅限于写简历、投简历、…

CentOS7 linux下yum安装redis以及使用

CentOS7 linux下yum安装redis以及使用 1.安装redis数据库 1 yum install redis 2.下载fedora的epel仓库 yum install epel-release 3.启动redis服务 systemctl start redis 4.查看redis状态 systemctl status redis systemctl stop redis 停止服务 systemctl restart r…

Codeforces 1182A Filling Shapes

题目链接&#xff1a;http://codeforces.com/problemset/problem/1182/A 思路&#xff1a;n为奇数时不可能完全填充&#xff0c;ans 0。发现若要完全填充&#xff0c;每俩列可产生俩种情况&#xff0c;所以为 ans 2n/2 AC代码&#xff1a; 1 #include<bits/stdc.h>2 us…

阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍

开头 很多人工作了十年&#xff0c;但只是用一年的工作经验做了十年而已。 高级工程师一直是市场所需要的&#xff0c;然而很多初级工程师在进阶高级工程师的过程中一直是一个瓶颈。 移动研发在最近两年可以说越来越趋于稳定&#xff0c;因为越来越多人开始学习Android开发&…

Mysql 允许所有IP访问

$ mysql -u root -p Enter password:mysql> use mysql#mysql> GRANT ALL ON *.* to root192.168.1.4 IDENTIFIED BY your-root-password; mysql> GRANT ALL ON *.* to root% IDENTIFIED BY root; mysql> FLUSH PRIVILEGES;

贪心算法小结2

F-Ants 一队蚂蚁在一根水平杆上行走&#xff0c;每只蚂蚁固定速度 1cm/s. 当一只蚂蚁走到杆的尽头时&#xff0c;立即从秆上掉落. 当两只蚂蚁相遇时它们会掉头向相反的方向前进. 我们知道每只蚂蚁在杆上的初始位置, 但是, 我们不知道蚂蚁向哪个方向前行. 你的任务是计算所有蚂蚁…

掌握这些Android开发热门前沿知识,跳槽薪资翻倍

前言 这是一篇软文、但是绝对不是鸡汤&#xff1b;为啥不是呢&#xff1f;因为我文笔太差…偶尔矫情发发牢骚&#xff08;勿喷&#xff09; 说说程序猿行业 现在社会上给IT行业贴上了几个标签&#xff1a;高薪、高危、高大上、秃顶&#xff08;哈哈&#xff09;。这些标签我…

linux环境-docker安装rabbitmq

1、进入docker hub镜像仓库地址&#xff1a;https://hub.docker.com/ 2、搜索rabbitMq&#xff0c;进入官方的镜像&#xff0c;可以看到以下几种类型的镜像&#xff1b;我们选择带有“mangement”的版本&#xff08;包含web管理页面&#xff09;&#xff1b; 3、拉取镜像 doc…

揭秘ARouter路由机制,源码+原理+手写框架

前言 每个程序员都有一个梦想&#xff0c;那就是进一线互联网公司深造&#xff0c;不要跟我说你不想进去&#xff0c;如果给你一个这样的平台&#xff0c;不管是薪资待遇还是接触的高度来说&#xff0c;对我们程序员来说都是一个机会&#xff0c;我以前有一个同事&#xff0c;…

docker 安装 nacos/nacos-server 镜像并配置本地数据库

docker pull nacos/nacos-server 启动镜像 这里启动容器的时候参数配置我就不在详解了&#xff0c;不明白的话&#xff0c;评论区留言&#xff0c;有不会的问题一定要及时询问&#xff0c;期待你的评论呦&#xff01; docker run --env MODEstandalone --name nacos -d -p 884…

初中 英文

英语过去式与过去完成进行时是在英语语法学习中&#xff0c;非常重要的两种语法&#xff0c;直接影响着英语能力的好坏。熟练掌握这两种语法对于学习者来说是至关重要的&#xff0c;今天就为大家整理了有关英语过去式与过去完成进行时的相关用法解析&#xff0c;希望大家可以认…

揭秘!双非渣本Android四年磨一剑,学习路线+知识点梳理

第一次观看我文章的朋友&#xff0c;可以关注、点赞、转发一下&#xff0c;每天分享各种干货技术和程序猿趣事 由于涉及到的面试题较多导致篇幅较长&#xff0c;我根据这些面试题所涉及到的常问范围总结了并做出了一份学习进阶路线图​​​​​​​及面试题答案免费分享给大家&…

Windows上PostgreSQL安装配置教程

这篇文章主要为大家详细介绍了Windows上PostgreSQL安装配置教程&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 PostgreSQL的扩展PostGIS是最著名的开源GIS数据库。 安装PostgreSQL是第一步。 1.下载PostgreSQL的二进制安装文件。 PostgreSQL官网…

快递100接口的调用过程

前言 大部分的商城都需要调用快递的接口来记录商城的物流信息&#xff0c;这里就给出一种快递接口&#xff08;快递100&#xff09;调用的方法。 正文 一、官方文档 1. 官方文档的地址为&#xff1a; https://www.kuaidi100.com/openapi/api_subscribe.shtml 二、具体实现 1. 商…

搞懂开源框架设计思想真的这么重要吗?终获offer

正文 从我个人的角度写写30多岁码工的感受&#xff1a;的确是受年龄压力开始增大了。比如二十多岁的小年轻&#xff0c;可能什么都懂&#xff0c;对组里的东西很熟悉。有时候我也怀疑自己是不是智商不够&#xff0c;是不是自学能力太差&#xff0c;是不是基础不行&#xff0c;…

gitlab 修改HTTP连接方式中的IP和端口

修改gitlab.yml文件 cd /opt/gitlab/embedded/service/gitlab-rails/config vim gitlab.yml 修改gitlab host&#xff1a;要修改的IPport&#xff1a;要修改的端口重启gitlab gitlab-ctl restart

Coding Interview Guide -- 向有序的环形单链表中插入新节点

【题目】 一个环形单链表从头节点head开始不降序&#xff0c;同时由最后的节点指回头节点。给定这样一个环形单链表的头节点head和一个整数num&#xff0c;请生成节点值为num的新节点&#xff0c;并插入到这个环形链表中&#xff0c;保证调整后的链表依然有序 1 public Nod…