目录
题目:**16.15(演示Label的属性)
编写一个程序,允许用户动态地设置属性contentDisplay和graphicTextGap,如图16-43a所示。
-
习题思路
- 创建一个HBox,新建两个Label(contentDisplay和graphicTextGap)。新建一个组合框ComboBox,内容为(LEFT,RIGHT,TOP,BOTTOM),再新建一个TextField,全部添加到HBox中。
- 创建一个HBox,添加一个Label,设置一个图形graphic,把Label添加到HBox中。
- 创建一个BorderPane,把第一个HBox设置在顶部,把第二个HBox设置在中心。
- 为ComboBox注册事件,当事件被触发时将Label的contentDisplay设置为选择的值。
- 为TextField注册键盘事件,按下Enter键触发,把graphicTextGap设置为输入的值。
-
代码示例
编程练习题16_15DemoLabelProperties.java
package chapter_16;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class 编程练习题16_15DemoLabelProperties extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
String[] items = {"LEFT", "RIGHT", "TOP", "BOTTOM"};
HBox hBoxTop = new HBox(10);
hBoxTop.setAlignment(Pos.CENTER);
ComboBox<String> cboDis = new ComboBox<String>();
cboDis.getItems().addAll(items);
cboDis.setValue("LEFT");
Label lbCD = new Label("contentDisplay:",cboDis);
lbCD.setContentDisplay(ContentDisplay.RIGHT);
TextField tfGap = new TextField();
tfGap.setPrefWidth(50);
Label lbGap = new Label("graphicTextGap:",tfGap);
lbGap.setContentDisplay(ContentDisplay.RIGHT);
hBoxTop.getChildren().addAll(cboDis,lbCD, tfGap,lbGap);
HBox hBoxCenter = new HBox();
hBoxCenter.setAlignment(Pos.CENTER);
Label label = new Label("Grapes");
label.setGraphic(new ImageView("src/Image/Grapes.png"));
hBoxCenter.getChildren().add(label);
BorderPane borderPane = new BorderPane();
borderPane.setTop(hBoxTop);
borderPane.setCenter(hBoxCenter);
cboDis.setOnAction(e ->{
String value = cboDis.getValue();
if(value.equals("LEFT"))
label.setContentDisplay(ContentDisplay.LEFT);
else if(value.equals("RIGHT"))
label.setContentDisplay(ContentDisplay.RIGHT);
else if(value.equals("TOP"))
label.setContentDisplay(ContentDisplay.TOP);
else if(value.equals("BOTTOM"))
label.setContentDisplay(ContentDisplay.BOTTOM);
});
tfGap.setOnKeyPressed(e ->{
if(e.getCode() == KeyCode.ENTER&&!tfGap.getText().isEmpty()) {
label.setGraphicTextGap(Integer.valueOf(tfGap.getText()));
}
});
Scene scene = new Scene(borderPane,380, 150);
primaryStage.setTitle("编程练习题16_15DemoLabelProperties");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
-
结果展示