package java1292.lesson051292; import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene;import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class system extends Application { private TextField inputTextField; private TextField sourceBaseTextField; private TextField targetBaseTextField; private Label resultLabel; @Override public void start(Stage primaryStage) { primaryStage.setTitle("Base Converter");// GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setPadding(new Insets(10)); grid.setVgap(8);// grid.setHgap(10); Label inputLabel = new Label("输入数字:");// inputTextField = new TextField(); Label sourceBaseLabel = new Label("当前进制 (2-16):"); sourceBaseTextField = new TextField(); sourceBaseTextField.setText("10"); // Default to decimal Label targetBaseLabel = new Label("目标进制 (2-16):"); targetBaseTextField = new TextField(); targetBaseTextField.setText("2"); // Default to binary Button convertButton = new Button("确认"); resultLabel = new Label(); grid.add(inputLabel, 0, 0); grid.add(inputTextField, 1, 0); grid.add(sourceBaseLabel, 0, 1); grid.add(sourceBaseTextField, 1, 1); grid.add(targetBaseLabel, 0, 2); grid.add(targetBaseTextField, 1, 2); grid.add(convertButton, 1, 3); grid.add(resultLabel, 1, 4); convertButton.setOnAction(event -> convert()); Scene scene = new Scene(grid, 300, 200); primaryStage.setScene(scene); primaryStage.show(); } private void convert() { String input = inputTextField.getText(); String sourceBaseStr = sourceBaseTextField.getText(); String targetBaseStr = targetBaseTextField.getText(); try { int sourceBase = Integer.parseInt(sourceBaseStr); int targetBase = Integer.parseInt(targetBaseStr); if (sourceBase < 2 || sourceBase > 16 || targetBase < 2 || targetBase > 16) { throw new IllegalArgumentException("Base must be between 2 and 16."); } long number = Long.parseLong(input, sourceBase); String result = convertToBase(number, targetBase); resultLabel.setText("Result: " + result); } catch (NumberFormatException e) { showAlert(AlertType.ERROR, "Invalid Input", "Number format error: " + e.getMessage()); } catch (IllegalArgumentException e) { showAlert(AlertType.ERROR, "Invalid Input", "Illegal argument: " + e.getMessage()); } } private String convertToBase(long number, int base) { if (number == 0) { return "0"; } StringBuilder result = new StringBuilder(); char[] digits = "0123456789ABCDEF".toCharArray(); while (number > 0) { result.insert(0, digits[(int) (number % base)]); number /= base; } return result.toString(); } private void showAlert(AlertType alertType, String title, String content) { Alert alert = new Alert(alertType); alert.setTitle(title); alert.setContentText(content); alert.setHeaderText(null); alert.showAndWait(); } public static void main(String[] args) { launch(args); } }