Button JavaFX选项卡窗格宽度和按钮宽度don´;不匹配

Button JavaFX选项卡窗格宽度和按钮宽度don´;不匹配,button,javafx,tabs,width,pane,Button,Javafx,Tabs,Width,Pane,当我试图在JavaFX中使用TabPane容器时,我注意到,如果我给TabPane中的选项卡指定一个特定的宽度,并给另一个元素(例如按钮)一个完全相同的宽度,它们会以不同的大小显示在屏幕上 以下是一个例子: 以下是此特定图像的代码I: package stackOverflow; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import

当我试图在JavaFX中使用
TabPane
容器时,我注意到,如果我给
TabPane
中的选项卡指定一个特定的宽度,并给另一个元素(例如
按钮
)一个完全相同的宽度,它们会以不同的大小显示在屏幕上

以下是一个例子:

以下是此特定图像的代码I:

package stackOverflow;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TabPane.TabClosingPolicy;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TabPaneMystery extends Application {

public static void main(String[] args){

    launch(args);

}

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

    StackPane stackPane = new StackPane();
    Scene scene = new Scene(stackPane, 600, 400);

    stage.setScene(scene);
    stage.show();

    TabPane tabPane = new TabPane();
    stackPane.getChildren().add(tabPane);
    Tab tab1 = new Tab();

    tabPane.setTabMaxWidth(160);        //The width of the tab is '160'
    tabPane.setTabMinWidth(160);
    tabPane.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE);

    tab1.setText("Tab");
    tabPane.getTabs().add(tab1);

    Button b = new Button();
    b.setText("Button");
    b.setPrefWidth(160);                //The width of the button is '160'
    b.setTranslateX(6);

    tab1.setContent(b);

}

}
在第33行和第34行(第一条注释为)中,我将踏脚板的宽度设置为
160
,在第42行(第二条注释为)中,我设置了完全相同的宽度 这将导致显示图像

我的问题是:

我是否犯了一个明显的错误,或者是某种错误,或者编译器对每个节点的宽度的解释有所不同?

我怀疑您在
选项卡中看到了一些填充。
选项卡的实际宽度为
170
。您可以通过将
选项卡的宽度更改为
150来确认这一点;然后,它将与
按钮的大小完全相同:

您还可以使用CSS删除填充:

tab1.setStyle("-fx-padding: 0");
尽管如此,正如您在下面看到的,它不是一个精确的匹配,可能还有其他CSS属性需要研究。不过,希望这能让你更接近你的目标:


按钮
也可能有一些填充。如果将其移除,会发生什么?@Slaw-从
按钮中移除填充物会降低高度,但不会降低宽度。有趣。当您知道在modena.css文件中,默认情况下所有边都有填充时,会更有趣一些:
.button。。。{..;-fx填充:0.333333em 0.666667em 0.333333333em 0.666667em;..}