繁体   English   中英

JavaFX TabPane 宽度和按钮宽度不匹配

[英]JavaFX TabPane width and Button width don´t match

当我试图用TabPane JavaFX中我注意到的容器,如果我给选项卡TabPane特定的宽度和其他元素,例如一个Button完全相同的宽度,他们表现出了不同尺寸的屏幕上。

这是一个例子:正如你在这张图片中看到的,按钮小于水龙头的宽度

这是此特定图像的代码 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 行(第一个注释所在的位置)我将 tapPane 的宽度设置为160 ,在第 42 行(第二个注释所在的位置)我设置了完全相同的宽度 这导致显示的图像。

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

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

截图1

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

tab1.setStyle("-fx-padding: 0");

虽然,正如您在下面看到的,它不是完全匹配的,可能还有其他 CSS 属性需要研究。 不过,希望这能让你更接近你的目标:

截图2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM