我正在使用JavaFX和Scene Builder制作应用程序。
我有Main类和从Main类调用的控制器。
我在控制器中有一个按钮,宽度为45,高度为90
切换按钮包装在StackPane中,而StackPane包装在AnchorPane中
当应用程序不是全屏时,如何将buttonPrefWidth更改为25,而当应用程序是全屏时,如何将按钮的prefWidth再次更改为45? >
或者我可以根据应用程序的大小更改按钮的prefWidth吗?
主要类别:
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
try {
Parent root =
FXMLLoader.load(getClass().getResource("/card/resources/fxml/card.fxml"));
Scene scene = new Scene(root, 1600, 600);
primaryStage.setScene(scene);
scene.getStylesheets().add(getClass().getResource("style.css")
.toExternalForm());
primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.setMaximized(true);
primaryStage.setResizable(true);
primaryStage.getIcons().add(new Image("card/resources/logo-icon.png"));
primaryStage.show();
//adding resize and drag primary stage
ResizeHelper.addResizeListener(primaryStage);
//assign ALT+ENTER to maximize window
final KeyCombination kb = new KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN);
scene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (kb.match(event)) {
primaryStage.setMaximized(!primaryStage.isMaximized());
primaryStage.setResizable(true);
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
控制器:
public class Controller implements Initializable {
@FXML private AnchorPane anchorRow;
@FXML private StackPane hBoxCat0;
@FXML private Button btnPalette;
@FXML
public void initialize(URL location, ResourceBundle resources) {
}
}
编辑:
@Slaw无效
答案 0 :(得分:0)
如果您只想根据窗口是否全屏在两个数字之间更改prefWidth
,则可以收听Stage
中的fullScreen
property 1}}属于。
Button
这首先会给您警告,因为在应用程序的这一点import javafx.beans.binding.Bindings;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class Controller {
@FXML private Button btnPallet;
@FXML
private void initialize() {
btnPallet.prefWidthProperty().bind(
Bindings.when(Bindings.selectBoolean(btnPallet.sceneProperty(), "window", "fullScreen"))
.then(45)
.otherwise(25)
);
}
}
不会成为Button
或Scene
的一部分。尽管这些警告令人讨厌,但是代码仍然可以正常工作。