Java做一个进制转换小工具

2023-10-30

通过swing和awt实现的一个简单的进制转换工具
可以进行数之间的进制转换
只有两个类
所有代码都放在https://github.com/13337356453/BHD_Converter
可自行下载
因为某些特殊的原因,没有把窗口弄得更漂亮(因为懒)

代码如下
BHD_Converter.java

package main;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import dialog.TextDialog;

public class BHD_Converter extends JFrame{
    private final String title="进制转换";
    private final int[] size=new int[]{300,400};
    private final String[] radix=new String[]{"二进制","八进制","十进制","十六进制"};
    private Container c=getContentPane();
    private JLabel label=new JLabel("进制转换");
    private JComboBox<String> fromBox=new JComboBox<>(radix);
    private JComboBox<String> toBox=new JComboBox<>(radix);
    private JLabel inputLabel=new JLabel("Input");
    private JLabel outputLabel=new JLabel("Output");
    private JTextField inputField=new JTextField();
    private JTextField outputField=new JTextField();
    private JButton startButton=new JButton("Start");
    private JPanel panel1=new JPanel();
    private JPanel panel2=new JPanel();
    private JPanel panel3=new JPanel();
    private JPanel panel4=new JPanel();

    public BHD_Converter(){
        show_window();
        button_event();
        setLayout(new GridLayout(4,1));
        setTitle(title);
        setVisible(true);
        setResizable(false);
        setSize(size[0], size[1]);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    private void show_window(){
        label.setFont(new Font("微软雅黑",Font.BOLD,30));
        panel1.add(label,BorderLayout.CENTER);
        c.add(panel1);

        panel2.setLayout(null);
        fromBox.setBorder(BorderFactory.createTitledBorder("From"));
        fromBox.setFont(new Font("微软雅黑",Font.PLAIN,15));
        fromBox.setBounds(0,0,140,50);
        toBox.setBorder(BorderFactory.createTitledBorder("To"));
        toBox.setFont(new Font("微软雅黑",Font.PLAIN,15));
        toBox.setBounds(140,0,140,50);
        panel2.add(fromBox);
        panel2.add(toBox);
        c.add(panel2);

        panel3.setLayout(null);
        inputLabel.setFont(new Font("微软雅黑",Font.PLAIN,20));
        inputLabel.setBounds(10,0,100,40);
        inputField.setFont(new Font("宋体",Font.BOLD,15));
        inputField.setBounds(10,40,120,30);
        outputLabel.setFont(new Font("微软雅黑",Font.PLAIN,20));
        outputLabel.setBounds(150,0,100,40);
        outputField.setFont(new Font("宋体",Font.BOLD,15));
        outputField.setEditable(false);
        outputField.setBounds(150,40,120,30);
        panel3.add(inputLabel);
        panel3.add(outputLabel);
        panel3.add(inputField);
        panel3.add(outputField);
        c.add(panel3);

        startButton.setFocusPainted(false);
        startButton.setFont(new Font("微软雅黑",Font.PLAIN,20));
        panel4.add(startButton,BorderLayout.CENTER);
        c.add(panel4);
    }

    private void button_event(){
        startButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String from=(String)fromBox.getSelectedItem();
                String to=(String)toBox.getSelectedItem();
                String input=inputField.getText();
                String result;
                switch (from){
                    case "二进制":
                        try {
                            switch (to){
                                case "八进制":
                                    result=Integer.toOctalString(Integer.parseInt(input,2));
                                    outputField.setText(result);
                                    break;
                                case "十进制":
                                    result=Integer.parseInt(input,2)+"";
                                    outputField.setText(result);
                                    break;
                                case "十六进制":
                                    result=Integer.toHexString(Integer.parseInt(input,2));
                                    outputField.setText(result);
                                    break;
                                default:
                                    outputField.setText(input);
                            }
                        }
                        catch (NumberFormatException e1){
                            new TextDialog("错误","输入的不是二进制数");
                            inputField.setText("");
                        }
                        break;
                    case "八进制":
                        try{
                            switch (to){
                                case "二进制":
                                    result=Integer.toBinaryString(Integer.parseInt(input,8));
                                    outputField.setText(result);
                                    break;
                                case "十进制":
                                    result=Integer.parseInt(input,8)+"";
                                    outputField.setText(result);
                                    break;
                                case "十六进制":
                                    result=Integer.toHexString(Integer.parseInt(input,8));
                                    outputField.setText(result);
                                    break;
                                default:
                                    outputField.setText(input);
                            }
                        }
                        catch (NumberFormatException e1){
                            new TextDialog("错误","输入的不是八进制数");
                            outputField.setText("");
                        }
                        break;
                    case "十进制":
                        switch (to){
                            case "二进制":
                                result=Integer.toBinaryString(Integer.valueOf(input));
                                outputField.setText(result);
                                break;
                            case "八进制":
                                result=Integer.toOctalString(Integer.valueOf(input));
                                outputField.setText(result);
                                break;
                            case "十六进制":
                                result=Integer.toHexString(Integer.valueOf(input));
                                outputField.setText(result);
                                break;
                            default:
                                outputField.setText(input);
                        }
                        break;
                    case "十六进制":
                        try{
                            switch (to){
                                case "二进制":
                                    result=Integer.toBinaryString(Integer.parseInt(input,16));
                                    outputField.setText(result);
                                    break;
                                case "八进制":
                                    result=Integer.toOctalString(Integer.parseInt(input,16));
                                    outputField.setText(result);
                                    break;
                                case "十进制":
                                    result=Integer.parseInt(input,16)+"";
                                    outputField.setText(result);
                                    break;
                                default:
                                    outputField.setText(input);
                            }
                        }
                        catch (NumberFormatException e1){
                            new TextDialog("错误","输入的不是十六进制数");
                            outputField.setText("");
                        }
                }
            }
        });
    }


    public static void main(String[] args) {
        new BHD_Converter();
    }

}

TextDialog.java

package dialog;

import javax.swing.*;
import java.awt.*;

public class TextDialog extends JDialog {
    public TextDialog(String title,String text) {
        // TODO 自动生成的构造函数存根
        Container c=getContentPane();
        c.add(new JLabel(text),SwingConstants.CENTER);
        setTitle(title);
        setSize(100, 100);
        setVisible(true);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java做一个进制转换小工具 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 贷款预测问题(探索性分析+多种解决方案)

    用到的数据集 train 链接 https pan baidu com s 1hCQKvLYxTb5MkltJDa1QlQ 提取码 jsh8 test 链接 https pan baidu com s 16SkJ7fo1yEutv4CwnW
  • 工厂方法(Factory Method):对象创建型模式

    文章目录 1 代码示例 2 工厂方法模式的定义 实现意图 1 代码示例 工厂方法模式 简称工厂模式或者多态工厂模式 与简单工厂模式相比 引入了更多的新类 灵活性更强 实现也更加复杂 符合开闭原则 付出的代价是需要新增加多个新的工厂类 如下
  • linux 卸载iscsi,iscsi挂载和删除

    iscsi挂载和删除 2011 01 01 11 54 01 分类 存储 字号 iscsi操作 http blog csdn net do2jiang archive 2009 12 29 5097730 aspx trune2fs c l
  • Python学习之:如何根据经纬度来实现地图的可视化(将这些点在地图上标注出来)

    文章目录 最终效果展示 实操步骤 第一步 打开高德地图的控制台 gt 数据可视化 第二步 创建可视化项目 第三步 上传CSV数据 注意格式要求 一定要包含经纬度信息 第四步 创建可视化实例 最终效果展示 这些红色的点 就是我们给出的经纬度的
  • javascript实现回到顶部按钮特效

    有时由于页面内容过多 每次回到顶部比较麻烦 所以记录一下JavaScript实现回到顶部按钮特效的代码 便于以后备用 css代码 实现回到顶部按钮特效 box position fixed right 10px bottom 10px he
  • Hadoop伪分布模式配置

    Hadoop共有三种部署方式 本地模式 伪分布模式及集群模式 本次安装配置以伪分布模式为主 即在一台服务器上运行Hadoop 如果是分布式模式 则首先要配置Master主节点 其次配置Slave从节点 以下说明如无特殊说明 默认使用root
  • QT多窗口

    常用的窗体基类是 QWidget QDialog 和 QMainWindow 在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择 QWidget 直接继承于 QObject 是 QDialog 和 QMainWindow 的父类
  • 在学习Python时遇到的一些项目bug

    启动线程 开启任务时 1 出现错误TypeError init got an unexpected keyword argument arg ok python没有能解析出来这个参数 好吧少写了个s 加上就没啥问题了 2 出现错误TypeE
  • 丑数打表 & 计算 (自用)

    丑数定义 只包含因子2 3 5的正整数被称作丑数 define min a b a lt b a b define min4 a b c d min min a b min c d int choushu 5850 int main int
  • 代理模型:最小二乘支持向量回归(LSSVR)--- MATLAB程序

    写在开头 代理模型是工程问题中常用的一个优化方法 当实际问题计算量很大 不容易求解时 可以使用计算量较小 求解迅速的简化模型来替代原模型 加速优化过程 代理模型采用一个数据驱动的 自下而上的办法来建立 首先 通过抽样得到有限个样本点 输入
  • java烟花代码_一个美丽的java烟花程序

    import java awt import java applet import java awt event import javax swing public class ChatApplet extends Applet imple
  • Shell 从入门到精通(二)

    变量的赋值方式 定义或引用变量时注意事项 双引号是弱引用 单引号是强引用 即单引号是所见即所得 双引号是进行了赋值操作 两个反引号等价于 反引号的中的shell命令会被先执行 变量数值运算 1 整数运算 expr 五颗星 2 整数运算 四颗
  • Spring源码解析4.createBean()方法解析

    createBeanInstance protected BeanWrapper createBeanInstance String beanName RootBeanDefinition mbd Nullable Object args
  • ​LeetCode刷题实战336:回文对

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 回文对 我们先来看题面 htt
  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • 解读HashMap中put方法的源码

    解析hashMap的put方法是如何存储一个键值 一 put方法 代码1 1 V put K key V value 方法 public V put K key V value return putVal hash key key valu
  • Java 面向对象之多态

    目录 1 接口 1 1 接口中成员的访问特点 1 2 默认方法 1 3 静态方法 1 4 私有方法 1 5 小结 2 多态 2 1 多态中成员的访问特点 2 2 多态的好处和弊端 2 3 多态中的转型 3 内部类 3 1 成员内部类 3 2
  • SpringBoot框架总结

    SpringBoot框架总结 一 SpringBoot框架的概念 1 传统框架的弊端 例如传统的SSM框架整合了MyBatis Spring SpringMVC框架 但其需要繁琐且重复的配置使程序员很是痛苦 2 SpringBoot框架 S
  • ros中编译release版本

    catkin build cmake args DCMAKE BUILD TYPE Release
  • Java做一个进制转换小工具

    通过swing和awt实现的一个简单的进制转换工具 可以进行数之间的进制转换 只有两个类 所有代码都放在https github com 13337356453 BHD Converter 可自行下载 因为某些特殊的原因 没有把窗口弄得更漂