Ширина JavaFX TabPane и ширина кнопки не совпадают - PullRequest
0 голосов
/ 13 февраля 2019

Когда я пытался использовать контейнер TabPane в JavaFX, я заметил, что если я дам Tabs в 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 (где второй комментарий) Я установил точно такую ​​же ширину. Это приводит к показанному изображению.

Мой вопрос:
Я сделал очевидную ошибку или это какая-то ошибка, или компилятор интерпретирует ширину для каждого узла несколько иначе?

1 Ответ

0 голосов
/ 13 февраля 2019

Я подозреваю, что вы видите некоторые отступы в Tab.Фактическая ширина Tab составляет 170.Вы можете подтвердить это, изменив ширину Tab на 150;тогда он будет точно такого же размера, как Button:

screenshot1

Вы также можете использовать CSS для удаления отступов:

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

Хотя, как вы можете видеть ниже, это не точное совпадение, и могут быть другие свойства CSS, на которые стоит обратить внимание.Надеюсь, это приблизит вас к вашей цели, хотя:

screenshot2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...