目录
*16.4 (创建一个英里/公里的转换器)
编写一个程序来转换英里和公里,如图16-37b所示。如果在英里文本域Mile中输入一个值之后按下回车键,就会在公里文本域公里值。同样的,在公里文本域Kilometer中输入一个值之后按下回车键,就会在英里文本域Mile中显示对应的英里值
- 英里和公里换算公式
1英里 = 1.60934 公里
1公里 = 0.621371 英里
-
习题思路
- 创建一个GridPane
- 创建两个Label和两个TextField,按照对应位置放置在GridPane中
- 为两个TextField设置键盘事件,当Enter键被按下且TextField内容不为空时,将输入框中的数字乘以1.60934或0.621371,并设置到另一个输入框中
-
代码示例
编程练习题16_4ConvertMilesToKilometers.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_4ConvertMilesToKilometers 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 lbMile = new Label("Mile");
Label lbKilometer = new Label("Kilometer");
TextField tfM = new TextField();
TextField tfK = new TextField();
pane.add(lbMile, 0, 0);
pane.add(lbKilometer, 0, 1);
pane.add(tfM, 1, 0);
pane.add(tfK, 1, 1);
tfM.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&tfM.getText()!="") {
double k = Math.round(Double.valueOf(tfM.getText())*1.60934*100.0)/100.0;
tfK.setText(k+"");
}
});
tfK.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&tfK.getText()!="") {
double m = Math.round(Double.valueOf(tfK.getText())* 0.621371*100.0)/100.0;
tfM.setText(m+"");
}
});
Scene scene = new Scene(pane, 300, 150);
primaryStage.setTitle("编程练习题16_4ConvertMilesToKilometers");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
-
结果展示