如何在 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);
}
}输出

广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP