如题。
package ch10;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/**
* @copyright 2023-2022
* @package ch10
* @file PaddingTest.java
* @date 2023-08-25 13:06
* @author qiao wei
* @version 1.0
* @brief 使用多个容器,测试控件边框宽度等数据。
* @history
*/
public class PaddingTest extends Application {
public static void main(String[] args) {
try {
Application.launch(PaddingTest.class, args);
} catch (Exception exception) {
exception.printStackTrace();
}
}
public PaddingTest() {}
@Override
public void start(Stage primaryStage) throws Exception {
start01(primaryStage);
}
private void start01(Stage primaryStage) throws Exception {
Pane pane = new Pane();
// 只操作pane的内边距padding,padding会在集中在pane1的右侧和下侧,只操作边框border和padding有相同的问题,必须结合layout。
/**
* 设置pane的边框。
*/
pane.setBorder(
new Border(
new BorderStroke(Color.HOTPINK,
BorderStrokeStyle.SOLID,
new CornerRadii(0),
new BorderWidths(10)
)
)
);
Pane pane1 = new Pane();
pane1.setPrefWidth(150);
pane1.setPrefHeight(50);
pane1.setBackground(
new Background(
new BackgroundFill(Color.BLUE,
new CornerRadii(30),
new Insets(0)
)
)
);
// 设置控件内边框。
double padding = 200;
// 设置容器控件对子控件的位置设定,子控件与父控件边控距离。
pane.setPadding(new Insets(padding / 2, 10, 30, 40));
pane1.setLayoutX(padding);
pane1.setLayoutY(padding);
pane.getChildren().add(pane1);
primaryStage.setScene(new Scene(pane));
primaryStage.show();
}
/**
* @class PaddingTest
* @date 2023-08-25 21:23
* @author qiao wei
* @version 1.0
* @brief 设置控件pane的边框和背景。Insets类设置控件的四个内边框与外边框的距离。
* @param
* @return
* @throws
*/
private void start02(Stage primaryStage) throws Exception {
Pane pane = new Pane();
pane.setPrefSize(100, 100);
// 设置控件背景。
pane.setBackground(
new Background(
new BackgroundFill(
Color.rgb(0,255,255),
new CornerRadii(20),
new Insets(3, 9, 18 ,36)
)
)
);
// 设置控件边框。
pane.setBorder(
new Border(
new BorderStroke(
Color.BLUE,
BorderStrokeStyle.DOTTED,
new CornerRadii(10),
new BorderWidths(3)
)
)
);
StackPane stackPane = new StackPane();
stackPane.setBackground(
new Background(
new BackgroundFill(
Color.DEEPPINK,
null,
new Insets(2, 4, 6, 8)
)
)
);
stackPane.setBorder(
new Border(
new BorderStroke(
Color.GREEN,
BorderStrokeStyle.SOLID,
new CornerRadii(10),
new BorderWidths(5)
)
)
);
// 容器添加容器
stackPane.getChildren().add(pane);
stackPane.setPadding(new Insets(2, 20, 40, 100));
primaryStage.setScene(new Scene(stackPane));
primaryStage.show();
}
/**
* @class PaddingTest
* @date 2023-08-25 19:46
* @author qiao wei
* @version 1.0
* @brief 设置控件pane的边框。Insets类设置控件四个内边框与外边框的距离。
* @param stage 主窗体控件。
* @return
* @throws
*/
private void start03(Stage stage) throws Exception {
Pane pane = new Pane();
pane.setBackground(
new Background(
new BackgroundFill(
Color.DEEPPINK,
new CornerRadii(30),
new Insets(1, 50, 150, 200)
)
)
);
Scene scene = new Scene(pane);
stage.setScene(scene);
stage.show();
}
}