当我试图在JavaFX中使用TabPane
容器时,我注意到,如果我给TabPane
中的Tabs一个特定的宽度和另一个元素,例如一个Button
完全相同的宽度,它们在屏幕上显示不同的大小。
这是一个例子:As you can see in this image, the Button is smaller than the width of the tap
以下是此特定图像的代码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行(第二个注释所在的位置)设置完全相同的宽度这将导致显示的图像。
我的问题是: 我是否犯了一个明显的错误,或者它是某种错误还是编译器解释每个节点的宽度有些不同?