You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
test/BaseConverterGUI.java

97 lines
3.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();
}
}
});
}
}