我遇到一个非常奇怪的问题,TabPane
左侧有标签按钮。问题仅出现在应用程序的运行时,而不是在SceneBuilder(2.0)预览中。
每次选定的Tab
更改时(通过用户点击或更改selectedIndex
通过代码),标签会将其位置向上移动并移出标签按钮区域的视口,如您所见在下面的例子中。移动的像素数量似乎取决于TabPane
的宽度(宽度越小,移动的越多),并且我的TabPane
中的按钮完全移出视口的大部分时间
通过对焦不同的窗口或在标签按钮区域向上或向下滚动,可以使标签按钮恢复到正常位置。一旦他们回到正常位置,他们只会在所选标签再次更改时再次移动。
我尝试访问TabHeaderSkin
对象(样式类“选项卡”),这些对象似乎是TabPane
标题区域中由于移位而变化的唯一运行时对象。根据Scenic View,他们的localY
值会发生变化。但是,myTabPane.lookupAll(".tab")
一无所获。
除此之外,似乎根本没有可能访问自动滚动行为或标签按钮位置或类似的东西。
修改
这是一个MCVE-FXML
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="20.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TabPane side="LEFT" tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab text="Untitled Tab 1">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab text="Untitled Tab 2">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab text="Untitled Tab">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab text="Untitled Tab">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
</tabs>
</TabPane>
</children>
</HBox>