如何在 JavaFX 中防止调整 UI 控件的大小?
在 JavaFX 中,javafx.scene.control 包提供专门为 UI 应用程序设计的节点的各种类,通过实例化这些类,您可以创建按钮、标签等 UI 元素。
您可以使用 setPrefWidth() 或 setPrefHeight() 或 setprefSize() 方法相应地调整已创建元素的大小。
要防止调整 UI 控件的大小,您需要将最小最大和首选宽度/高度设置为相同的值,如下所示 -
button.setMinWidth(80.0); button.setPrefWidth(80.0); button.setMaxWidth(80.0);
示例
以下 JavaFX 示例包含两个按钮和一个滑块。您可以通过移动滑块来调整按钮(Hello)的大小。单击 PreventResizing 按钮后,您将无法进一步调整“Hello”按钮的大小。
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.geometry.Orientation; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class PreventingResize extends Application { public void start(Stage stage) { //Creating a button Button button = new Button("Hello"); //Creating a slider to resize the button Slider slider = new Slider(40, 200, 40); //Setting its orientation to Horizontal slider.setPrefHeight(180); slider.setOrientation(Orientation.VERTICAL); slider.setShowTickLabels(true); slider.setShowTickMarks(true); slider.setMajorTickUnit(40); slider.setBlockIncrement(20); slider.valueProperty().addListener(new ChangeListener<Number>() { public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){ button.setPrefSize((double)newValue, (double)newValue); } }); //Preventing the resize Button prevent = new Button("Prevent Resizing"); //Setting action to the button prevent.setOnAction(e -> { button.setMinWidth(45); button.setPrefWidth(45); button.setMaxWidth(45); button.setMinHeight(25); button.setMaxHeight(25); button.setPrefHeight(25); }); //Creating the pane BorderPane pane = new BorderPane(); pane.setCenter(button); pane.setRight(prevent); pane.setLeft(new VBox(new Label("Button Reize"), slider)); pane.setPadding(new Insets(10, 10, 10, 10)); //Preparing the scene Scene scene = new Scene(pane, 595, 250); stage.setTitle("Preventing Resize"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
输出
广告