通过swing和awt实现的一个简单的进制转换工具
可以进行数之间的进制转换
只有两个类
所有代码都放在https://github/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);
}
}
更多推荐
Java做一个进制转换小工具
发布评论