2016-07-14 1 views
2

Я все еще новичок в javaFX. В моем коде мне нужно получить местоположение и размер заголовка вкладки, но я не могу найти какое-либо свойство или функцию, которые возвращают его размер или местоположение.Как определить местоположение и размер заголовка вкладки в JavaFX

+1

Просто интересно, почему вы хотели бы получить эту информацию. Возможно, есть лучший способ сделать то, что вы на самом деле пытаетесь сделать. –

ответ

3

Я не понимаю ваш вопрос правильно, но обычно вы можете использовать функцию lookup, чтобы получить .tab-header-area CSS selector, что на самом деле является StackPane.

TabPane tabPane = new TabPane(); 
tabPane.getTabs().addAll(new Tab("Tab1"), new Tab("Tab2"), new Tab("Tab3")); 

Button b = new Button("Get header"); 
b.setOnAction((e) -> { 
    StackPane headerArea = (StackPane) tabPane.lookup(".tab-header-area"); 
    System.out.println("Coordinates relatively to Scene: " + headerArea.localToScene(headerArea.getBoundsInLocal())); 
}); 

Выход

Coordinates relatively to Scene: BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:500.0, height:29.0, depth:0.0, maxX:500.0, maxY:29.0, maxZ:0.0] 

Если вы хотите получить информацию об отдельных вкладках:

Set<Node> tabs = tabPane.lookupAll(".tab"); 
for (Node node : tabs) { 
    System.out.println("Coordinates relatively to Scene: " + node.localToScene(node.getBoundsInLocal())); 
} 

и выход

Coordinates relatively to Scene: BoundingBox [minX:5.0, minY:5.0, minZ:0.0, width:54.0, height:24.0, depth:0.0, maxX:59.0, maxY:29.0, maxZ:0.0] 
Coordinates relatively to Scene: BoundingBox [minX:59.0, minY:5.0, minZ:0.0, width:38.0, height:24.0, depth:0.0, maxX:97.0, maxY:29.0, maxZ:0.0] 
Coordinates relatively to Scene: BoundingBox [minX:97.0, minY:5.0, minZ:0.0, width:38.0, height:24.0, depth:0.0, maxX:135.0, maxY:29.0, maxZ:0.0] 

Я использовал функцию localToScene с параметром local boundsStackPane, чтобы получить координаты относительно Scene.

Примечание: Поиск не гарантируется, пока CSS не будет применен к Scene.

Смежные вопросы