JAVA 简单进制转换器

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("计算器");
    }
}

猜你喜欢

转载自www.cnblogs.com/graytido/p/12976025.html