JavaFX 中的按钮文本插入

问题描述 投票:0回答:1

我觉得这可能是一个简单修复的问题,或者我错过了一些明显的东西。我生疏了(几年后又回到了一些休闲编程中),我一辈子都无法弄清楚。

我有一堆按钮,我想保持较小,但由于按钮边框和文本本身之间的插图,文本总是被截断。我将如何减少这些插图以使文本更接近按钮的边框?我正在使用 SceneBuilder,它没有更改它们的选项,我发现唯一可以做到这一点的选项是灰色的。

纽扣大队 enter image description here

我一直在网上寻找答案,但找不到答案,因为插图和按钮有很多关系。任何帮助将不胜感激!〜

编辑:因此,这将创建一个截断文本的按钮,即使该文本适合按钮(如果不是按钮内的插图)。我希望能澄清一些事情,抱歉,这个网站还很新。~

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.Pane?>


<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1">
    <children>
        <Button layoutX="274.0" layoutY="188.0" maxHeight="24.0" maxWidth="24.0" minHeight="24.0" minWidth="24.0" mnemonicParsing="false" prefHeight="24.0" prefWidth="24.0" text="NW" />
    </children>
</Pane>
css button javafx scenebuilder
1个回答
0
投票

这个答案解决了我认为您的主要问题,即如何调整按钮填充。

我确信您可能还有其他问题,因为此答案不太可能回答您所有相关的疑问,但是,如果是这样,最好将它们作为新问题提出。

使用 CSS 设置按钮填充样式

这可以通过 CSS 来完成。

正如 Slaw 在评论中指出的:

默认的应用程序范围用户代理样式表 (

modena.css
) 提供按钮填充

您可以通过将 padding 属性设置为其他值(也许为零?)来覆盖它。

采用内联样式

在代码中,你可以这样写:

unpaddedButton.setStyle("-fx-padding: 0px");

使用外部样式表

但最好应用 CSS 样式表:

.unpadded {
   -fx-padding: 0px; 
}   

然后输入代码:

unpaddedButton.getStyleClass().add("unpadded");

将样式应用于所有按钮

或者,如果您想取消应用程序中的所有按钮(不太可能),您可以只使用样式表。

.button {
   -fx-padding: 0px; 
}

您可以将其限制为某个自定义窗格,以对自定义窗格中的所有按钮进行样式设置,方法是将“自定义窗格”样式类(或您想要的任何其他名称)应用于包含您想要设置样式的所有按钮的布局窗格。

.custom-pane > .button {
   -fx-padding: 0px; 
}

使用场景生成器

要将其应用到带有场景生成器的 FXML,您可以将自定义 CSS 样式表与场景生成器中的 FXML 相关联,然后应用该样式。从场景生成器使用 CSS 样式表的过程记录在 Oracle Scene Builder 指南中(Oracle 文档已过时,但在这方面仍然相关)。

示例

这个基本示例使用内联样式从按钮中删除填充。

padding

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.io.IOException;

public class ButtonPaddingApp extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        Button paddedButton = new Button("Padded");
        Button unpaddedButton = new Button("Unpadded");
        unpaddedButton.setStyle("-fx-padding: 0px");

        VBox layout = new VBox(10, paddedButton, unpaddedButton);
        layout.setPadding(new Insets(20));
        stage.setScene(new Scene(layout));
        stage.show();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.