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