目录
题目:*16.5 (转换数字)
编写一个程序,在十进制、十六进制和二进制间转换数字,如图16-37c所示。当在十进制值的文本域中输入一个十进制值并且按回车键,会在其他两个文本域中显示相应的十六进制和二进制数字。同理,也可以在其他文本域中输入值,然后进行相应转换
-
习题思路
- 创建一个GridPane,创建三个Label和三个TextField,依次添加到面板中
- 为三个TextField分别注册一个键盘事件,获取当前输入框中的数字,转换后设置到其他输入框内(可以使用Integer的toHexString、toBinaryString、parseInt方法)
示例代码
编程练习题16_5ConvertNumbers.java
package chapter_16;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class 编程练习题16_5ConvertNumbers extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
GridPane pane = new GridPane();
pane.setHgap(10);
pane.setVgap(10);
pane.setAlignment(Pos.CENTER);
Label lbDecimal = new Label("Decimal");
Label lbHex = new Label("Hex");
Label lbBinary = new Label("Binary");
TextField tfD = new TextField();
TextField tfH = new TextField();
TextField tfB = new TextField();
pane.add(lbDecimal, 0, 0);
pane.add(lbHex, 0, 1);
pane.add(lbBinary, 0, 2);
pane.add(tfD, 1, 0);
pane.add(tfH, 1, 1);
pane.add(tfB, 1, 2);
tfD.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&tfD.getText()!="") {
String hex = Integer.toHexString(Integer.valueOf(tfD.getText()));
String binary = Integer.toBinaryString(Integer.valueOf(tfD.getText()));
tfH.setText(hex);
tfB.setText(binary);
}
});
tfH.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&tfH.getText()!="") {
int decimal = Integer.parseInt(tfH.getText(),16);
String binary = Integer.toBinaryString(decimal);
tfD.setText(decimal+"");
tfB.setText(binary);
}
});
tfB.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&tfB.getText()!="") {
int decimal = Integer.parseInt(tfB.getText(),2);
String hex = Integer.toHexString(decimal);
tfD.setText(decimal+"");
tfH.setText(hex);
}
});
Scene scene = new Scene(pane, 300, 150);
primaryStage.setTitle("编程练习题16_5ConvertNumbers");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
-
结果展示