JAVA作业写了个进制转换器...写出来的东西还蛮怪的

/*

* Author:graykido

* Coding:GBK

* */

package Caculater;

import javafx.scene.layout.Background;

import javafx.scene.layout.BackgroundImage;

import javax.rmi.ssl.SslRMIClientSocketFactory;

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.beans.JavaBean;

import java.nio.ByteOrder;

import java.util.concurrent.Flow;

public class caculater extends JFrame {

ImageIcon icon;

JLabel label;

//输入文本框

JTextField text;

//数字按钮

JPanel numPanl;

JButton numButton[];

//输入和输出进制的框

JPanel buttonPanel;

//输出进制单选框

JLabel outbuttonlabel;

JPanel outbuttonPanel;

ButtonGroup obtg;

//输入进制单选框

JLabel inbuttonlabel;

JPanel inbuttonPanel;

ButtonGroup ibtg;

//将文本框和进制框放在一个jpanel内

JPanel thPanel;

//当前输入进制

int IHex;

caculater(String title) {

super(title);

//默认输入是十进制

this.IHex = 10;

Container ctpn = getContentPane();

//设置布局

GridLayout layout = new GridLayout(2, 2);

this.setLayout(layout);

//设置文本框

text = new JTextField();

text.setBorder(BorderFactory.createRaisedBevelBorder());

text.setFont(new Font("宋体", Font.BOLD, 25));

//设置标题图标

this.icon = new ImageIcon("src\\Caculater\\go.png");

icon.setDescription("gogogo");

Image img = this.icon.getImage();

this.setIconImage(img);

this.setLocation(100, 200);

this.setSize(1000, 600);

//设置菜单

JMenuBar jmb = new JMenuBar();

JMenu edit = new JMenu("编辑");

JMenuItem edit1 = new JMenuItem("施工中");

edit.add(edit1);

jmb.add(edit);

JMenu view = new JMenu("查看");

JMenuItem view1 = new JMenuItem("施工中");

view.add(view1);

jmb.add(view);

JMenu help = new JMenu("帮助");

JMenuItem help1 = new JMenuItem("施工中");

help.add(help1);

jmb.add(help);

this.setJMenuBar(jmb);

//图标

ImageIcon icon1 = new ImageIcon("src/Caculater/left.gif");

ImageIcon icon2 = new ImageIcon("src/Caculater/right.gif");

buttonPanel = new JPanel();

//输出进制单选框

outbuttonPanel = new JPanel();

obtg = new ButtonGroup();

JLabel outL = new JLabel("输出进制", icon1, JLabel.CENTER);

outbuttonPanel.add(outL);

outaddRadioButton("二进制", 2);

outaddRadioButton("八进制", 8);

outaddRadioButton("十进制", 10);

outaddRadioButton("十六进制", 16);

//输入进制单选框

inbuttonPanel = new JPanel();

ibtg = new ButtonGroup();

JLabel inL = new JLabel("输入进制", icon2, JLabel.CENTER);

inbuttonPanel.add(inL);

inaddRadioButton("二进制", 2);

inaddRadioButton("八进制", 8);

inaddRadioButton("十进制", 10);

//数字按钮

this.numPanl = new JPanel();

this.numButton = new JButton[20];

for (int i = 0; i < 10; i++) {

numButton[i] = addJButton(i);

numPanl.add(numButton[i]);

}

//清空文本框按钮

JButton clr = new JButton("clr");

clr.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

text.setText("");

}

}); //对于数字按钮以及清空按钮排版

numPanl.add(clr);

numPanl.setLayout(new GridLayout(4, 4));

buttonPanel.setLayout(new GridLayout(2, 1));

buttonPanel.add(outbuttonPanel);

buttonPanel.add(inbuttonPanel);

thPanel = new JPanel(new GridLayout(1, 2));

thPanel.add(text);

thPanel.add(buttonPanel);

// ctpn.add(text);

ctpn.add(thPanel);

// ctpn.add(outbuttonPanel);

// ctpn.add(inbuttonPanel);

ctpn.add(numPanl);

//关闭进程

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public JButton addJButton(int num) {

JButton button = new JButton("" + num);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

try {

Integer.parseInt(text.getText());

} catch (Exception e) {

text.setText("");

}

text.setText(text.getText() + num);

validate();

}

});

return button;

}

public void outaddRadioButton(String title, int Hex) {

JRadioButton button = new JRadioButton(title);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

//触发进制转换

try {

int num = Integer.parseInt(text.getText());

//先将框内内容转为十进制

int temp = num;

int mut = 1;

int res = 0;

if (IHex != 10) {

while (temp != 0) {

res += (temp % 10 * mut);

mut *= IHex;

temp /= 10;

}

} else {

res = num;

}

num = res;

String ans = "";

while (num != 0) {

// ans += String.valueOf(num % Hex < 10 ? num % Hex : num % Hex - 10 + 'A');

ans += (char) (num % Hex < 10 ? num % Hex + '0' : num % Hex - 10 + 'A');

num /= Hex;

}

text.setText(new StringBuffer(ans).reverse().toString());

} catch (NumberFormatException e) {

text.setText("请输入数字或检查输入数字范围是否过大");

} catch (Exception e) {

text.setText("" + e);

}

}

});

obtg.add(button);

outbuttonPanel.add(button);

}

public void inaddRadioButton(String title, int Hex) {

JRadioButton button = new JRadioButton(title);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

IHex = Hex;

for (int i = 0; i < 10; i++) {

numButton[i].setEnabled(true);

}

for (int i = Hex; i < 10; i++) {

numButton[i].setEnabled(false);

}

}

});

inbuttonPanel.add(button);

ibtg.add(button);

}

public static void main(String[] args) {

caculater fr = new caculater("计算器");

}

}

标签:10,JAVA,进制,text,Hex,add,num,new,转换器

来源: https://www.cnblogs.com/graytido/p/12976025.html

用java编写进制转换器_JAVA 简单进制转换器相关推荐

  1. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!

    在面向对象的编程语言中,类和对象必然是最核心的特性之一.本文主要介绍Java中的类和对象. 示例 以班级成员为例,班上有小红.小明.小李,还有王老师.张老师和魏老师,我们认为他们都属于"人类 ...

  2. java编写翻译字典数据库_java实现简单的英文文本单词翻译器功能示例

    本文实例讲述了java实现简单的英文文本单词翻译器功能.分享给大家供大家参考,具体如下: 直接上代码: package fanyi; import java.io.BufferedReader; im ...

  3. java编写添加背景音乐代码_java代码中简单添加背景音乐(亲测有效)

    在做java贪吃蛇游戏课设时,想添加背景音乐,用了以下很简单的步骤即可完成,亲测有效哦! 调用方法: new Thread(()->{while(true) {Data.playMusic(); ...

  4. java 发送16进制数据'_java 16进制数据递增

    基本思路 String hex="ff" String binString = hex -> bin String addBinString = binString + N ...

  5. 用java编写战舰 游戏吗_java – 战舰游戏 – 船舶重叠

    我正在使用ACM库在 Java中编写一个简单的战舰游戏. 游戏开始后,应该将船只放在画布上的随机位置,但问题是船只可能会互相覆盖,这在游戏中是不允许的.如何避免将船放在彼此之上? 我的代码是: pri ...

  6. java jsp中的日历表_JAVA简单的日历程序

    JAVA简单的日历程序 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 /**以下是日历的代码程序 有疑问 回信 ycj@18e.net **/ //Cale ...

  7. java编写静态工具类_Java编程中静态内部类与同步类的写法示例

    java静态内部类 将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致.不过其细节方面仍然有很大的不同.具体来说,主要有如下几个地方要引起各位程序开发人员的注意. (一 ...

  8. Java 编写推箱子报告_Java推箱子怎么写啊?

    展开全部 这是我之前写的一篇java实现推箱子算法的文章,简单的给你看一下: <推箱子游戏>是一款益智32313133353236313431303231363533e59b9ee7ad9 ...

  9. java利用redis实现排行榜_Java简单使用redis-zset实现排行榜

    简单使用redis-zset实现排行榜 此方法实现一个根据某字段的查询次数进行排行,查询的次数越多排行越前(从大到小排序),适用于初学者 1.添加依赖 org.springframework.boot ...

最新文章

  1. dedecms 财付通接口
  2. mybatis foreach map_Spring Boot(五):春眠不觉晓,Mybatis知多少
  3. 如何彻底卸载mysql(xp)
  4. 后浪优秀!21 岁小伙兼职程序员养家,大三存款达 6 位数
  5. 在linux 下配置firewalld
  6. c++11并发指南系列
  7. MQTT代理服务器特性对比
  8. JavaScript中的 in 操作符
  9. 【pwnable.kr】passcode
  10. oracle 平均值 最大值,Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT
  11. nginx(三)初步搭建nginx虚拟主机
  12. Chrome 大版本更新来了,这是一次「史诗级」增强
  13. 硬盘测试软件测试有问题,用crystaldiskinfo工具检测出来硬盘不良怎么办
  14. STM32接电机驱动,杜邦线供电,然后反烧问题
  15. 数独基本规则_数独游戏的入门规则
  16. 基础软件照搬开源不可取,自力更生才是正途
  17. 使用python快速插入一百万数据
  18. 可以在保利威视后台查看自己开发CMS系统帐号看了某个视频多长时间
  19. iPhoneX APP界面设计尺寸图-庞姿姿
  20. Java导出excel文件

热门文章

  1. Flooded! POJ - 1877 模拟题
  2. MATLAB许可证过期的解决办法
  3. 拼多多微信页面h5 html,拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket...
  4. 北京飞漫软件魏永明:浏览器技术与三网融合
  5. TensorFlow学习笔记(二)把数字标签转化成onehot标签
  6. 用P、V操作解决进程同步问题的解题步骤
  7. Python 在Windows上终止子过程(subprocess)
  8. netty4 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
  9. “Stream has already been operated upon or closed” Exception in Java
  10. git分支代码提交主干