我遇到了一个非常奇怪的问题,它的TabPane左侧带有选项卡按钮。该问题仅在应用程序运行时出现,而不在SceneBuilder(2.0)预览中出现。

每次选定的Tab更改时(通过用户单击或通过代码更改selectedIndex),选项卡都将其位置向上移动并移出选项卡按钮区域的视口,如下面的示例图片所示。像素移位量似乎取决于TabPane的宽度(宽度越小,移位量越大),并且大多数时候TabPane中的按钮完全移出视口。

通过聚焦不同的窗口或在选项卡按钮区域中向上或向下滚动,可以将选项卡按钮恢复到其正常位置。一旦它们恢复到正常位置,它们只会在所选选项卡再次更改时再次移位。

我试图访问TabHeaderSkin对象(样式类“ tab”),这些对象似乎是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>

最佳答案

看起来像一个影响JavaFX 8u20的known bug。它似乎在ea版本8u40中已修复。

关于java - JavaFX 8 TabPane-Tab按钮不断滚动到TabPane header 的视口(viewport)之外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27327914/

10-11 06:14