|
|
|
|
package com.example.baseconverter;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
|
|
|
|
|
|
public class BaseConverterGUI extends JFrame {
|
|
|
|
|
|
|
|
|
|
private JPanel contentPane;
|
|
|
|
|
private JTextField sourceBaseField;
|
|
|
|
|
private JTextField sourceNumberField;
|
|
|
|
|
private JTextField targetBaseField;
|
|
|
|
|
private JButton convertButton;
|
|
|
|
|
private JLabel resultLabel;
|
|
|
|
|
|
|
|
|
|
public BaseConverterGUI() {
|
|
|
|
|
setTitle("Base Converter");
|
|
|
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
|
setBounds(100, 100, 450, 150);
|
|
|
|
|
contentPane = new JPanel();
|
|
|
|
|
contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
|
|
|
|
setContentPane(contentPane);
|
|
|
|
|
contentPane.setLayout(null);
|
|
|
|
|
|
|
|
|
|
JLabel sourceBaseLabel = new JLabel("原始进制 (2-16):");
|
|
|
|
|
sourceBaseLabel.setBounds(10, 11, 85, 14);
|
|
|
|
|
contentPane.add(sourceBaseLabel);
|
|
|
|
|
|
|
|
|
|
sourceBaseField = new JTextField();
|
|
|
|
|
sourceBaseField.setBounds(99, 8, 86, 20);
|
|
|
|
|
contentPane.add(sourceBaseField);
|
|
|
|
|
sourceBaseField.setColumns(10);
|
|
|
|
|
|
|
|
|
|
JLabel sourceNumberLabel = new JLabel("原始数:");
|
|
|
|
|
sourceNumberLabel.setBounds(10, 42, 85, 14);
|
|
|
|
|
contentPane.add(sourceNumberLabel);
|
|
|
|
|
|
|
|
|
|
sourceNumberField = new JTextField();
|
|
|
|
|
sourceNumberField.setBounds(99, 39, 86, 20);
|
|
|
|
|
contentPane.add(sourceNumberField);
|
|
|
|
|
sourceNumberField.setColumns(10);
|
|
|
|
|
|
|
|
|
|
JLabel targetBaseLabel = new JLabel("目标进制 (2-16):");
|
|
|
|
|
targetBaseLabel.setBounds(10, 73, 85, 14);
|
|
|
|
|
contentPane.add(targetBaseLabel);
|
|
|
|
|
|
|
|
|
|
targetBaseField = new JTextField();
|
|
|
|
|
targetBaseField.setBounds(99, 70, 86, 20);
|
|
|
|
|
contentPane.add(targetBaseField);
|
|
|
|
|
targetBaseField.setColumns(10);
|
|
|
|
|
|
|
|
|
|
convertButton = new JButton("转换");
|
|
|
|
|
convertButton.setBounds(199, 110, 89, 23);
|
|
|
|
|
contentPane.add(convertButton);
|
|
|
|
|
|
|
|
|
|
resultLabel = new JLabel("");
|
|
|
|
|
resultLabel.setBounds(299, 70, 130, 14);
|
|
|
|
|
contentPane.add(resultLabel);
|
|
|
|
|
|
|
|
|
|
convertButton.addActionListener(new ActionListener() {
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
try {
|
|
|
|
|
int sourceBase = Integer.parseInt(sourceBaseField.getText());
|
|
|
|
|
String sourceNumber = sourceNumberField.getText();
|
|
|
|
|
int targetBase = Integer.parseInt(targetBaseField.getText());
|
|
|
|
|
|
|
|
|
|
if (sourceBase < 2 || sourceBase > 16 || targetBase < 2 || targetBase > 16) {
|
|
|
|
|
resultLabel.setText("进制必须在2到16之间!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int decimalValue = BaseConverter.toDecimal(sourceNumber, sourceBase);
|
|
|
|
|
String targetNumber = BaseConverter.fromDecimal(decimalValue, targetBase);
|
|
|
|
|
resultLabel.setText("转换后的数是: " + targetNumber);
|
|
|
|
|
} catch (NumberFormatException ex) {
|
|
|
|
|
resultLabel.setText("请输入有效的数字");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
EventQueue.invokeLater(new Runnable() {
|
|
|
|
|
public void run() {
|
|
|
|
|
try {
|
|
|
|
|
BaseConverterGUI frame = new BaseConverterGUI();
|
|
|
|
|
frame.setVisible(true);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|