gpt4 book ai didi

java - 在 JavaFX 中添加按钮后工具栏的大小不正确

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:11 25 4
gpt4 key购买 nike

我想添加仅包含图像的按钮,即没有任何文本,仅包含图标化按钮。

这是我的按钮的一个类:

package custom.toolbar;

import javafx.scene.control.Button;

class MyButton extends Button {

MyButton() {
getStyleClass().add("my-button");
setMinSize(25, 25);
setMaxSize(25, 25);
}
}

我创建了派生 JavaFX ToolBar 的自定义工具栏。

package custom.toolbar;

import javafx.scene.control.ToolBar;

class MyToolBar extends ToolBar {

MyToolBar() {
getStyleClass().add("my-toolbar");
}
}

CSS 文件:

.my-button {
-fx-background-image: url("../img/icon/open.png");
-fx-background-repeat: no-repeat;
-fx-background-position: center;
-fx-background-size: 16px 16px;
-fx-background-color: transparent;
}

.my-button:hover {
-fx-border-color: lightgray;
-fx-background-color: #ededed;
-fx-border-width: 1px;
-fx-border-radius: 2px;
}

.my-toolbar {
-fx-background-color: lightcyan;
}

最后是主类本身:

package custom.toolbar;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception {

AnchorPane anchorPane = new AnchorPane();
anchorPane.setPadding(new Insets(20));
anchorPane.setStyle("-fx-background-color: white");

MyToolBar myToolBar = new MyToolBar();

for (int i = 0; i < 5; i++)
myToolBar.getItems().add(new MyButton());

anchorPane.getChildren().addAll(myToolBar);

String styleCss = getClass().getResource("/css/my-toolbar.css").toExternalForm();

Scene scene = new Scene(anchorPane);
scene.getStylesheets().add(styleCss);
primaryStage.setScene(scene);
primaryStage.show();
}
}

我在工具栏上添加了 5 个按钮。 ToolBar的颜色是浅青色,这是因为我只是想突出显示以便查看ToolBar的大小。

这是屏幕截图。

正如您所看到的,工具栏的大小小于所有带有插图的按钮的大小。我不知道为什么填充在 AnchorPane 中不起作用。

如何解决?

最佳答案

要固定 MyToolBar 的大小,请将 PreferedSize 添加到 MyButton

class MyButton extends Button {
MyButton() {
getStyleClass().add("my-button");
setPrefSize(25, 25);
setMinSize(25, 25);
setMaxSize(25, 25);
}
}

如果您锚定了节点,填充仅在 AnchorPane 中起作用。

例如:

AnchorPane anchorPane = new AnchorPane();
anchorPane.setPadding(new Insets(20));

MyToolBar myToolBar = new MyToolBar();
AnchorPane.setTopAnchor(myToolBar, 0.0);
AnchorPane.setLeftAnchor(myToolBar, 0.0);

anchorPane.getChildren().addAll(myToolBar);

关于java - 在 JavaFX 中添加按钮后工具栏的大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com