我正在尝试获取一些关于ScrollBar
组件的信息,这些组件按标准包含在ScrollPane
中。特别是我对阅读水平滚动条
的高度
感兴趣。我怎么参考?
由于提到的方法并不适合所有人(包括我),我进一步调查了一下,找到了问题的根源。
通常,这两种方法都起作用,但只有在ScrollPane
的Skin
属性设置好之后才起作用。在我的例子中,在使用FXMLLoader
加载我的视图后,skin
仍然为null
。
如果skin
属性尚未初始化(使用一次性侦听器),则延迟调用可以解决问题。
工作锅炉板代号:
ScrollPane scrollPane;
// ...
if (scrollPane.getSkin() == null) {
// Skin is not yet attached, wait until skin is attached to access the scroll bars
ChangeListener<Skin<?>> skinChangeListener = new ChangeListener<Skin<?>>() {
@Override
public void changed(ObservableValue<? extends Skin<?>> observable, Skin<?> oldValue, Skin<?> newValue) {
scrollPane.skinProperty().removeListener(this);
accessScrollBar(scrollPane);
}
};
scrollPane.skinProperty().addListener(skinChangeListener);
} else {
// Skin is already attached, just access the scroll bars
accessScrollBar(scrollPane);
}
private void accessScrollBar(ScrollPane scrollPane) {
for (Node node : scrollPane.lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar) {
ScrollBar scrollBar = (ScrollBar) node;
if (scrollBar.getOrientation() == Orientation.HORIZONTAL) {
// Do something with the horizontal scroll bar
// Example 1: Print scrollbar height
// System.out.println(scrollBar.heightProperty().get());
// Example 2: Listen to visibility changes
// scrollBar.visibleProperty().addListener((observable, oldValue, newValue) -> {
// if(newValue) {
// // Do something when scrollbar gets visible
// } else {
// // Do something when scrollbar gets hidden
// }
// });
}
if (scrollBar.getOrientation() == Orientation.VERTICAL) {
// Do something with the vertical scroll bar
}
}
}
}
我希望能够向下滚动动态生成的电影列表。我尝试添加滚动窗格。 我在页面的开头有一个导航栏,中间有一个包含所有电影的jpanel。 您可以使用以下代码重新创建此示例: 我想做的是用我的鼠标滚轮向下滚动这个电影列表,而不看任何滚动条。它现在看起来应该和现在一模一样,但我希望能够向下滚动,看到所有的电影。 我不知道为什么它不起作用,这就是为什么我在这里问,希望有人能向我解释我做错了什么。
问题内容: 我已经创建了JTextpane并在textpane中插入了组件(像Jtextarea这样的组件)。当我在该JTextpane中插入新组件时,JTextpane的Jscrollpane(的垂直滚动条)会自动设置为底部。我想将其设置为最高位置。我怎样才能做到这一点 感谢Sunil Kumar Sahoo 问题答案: 这是我使用的实用程序类。可用于滚动到的顶部,底部,左侧,右侧或水平/垂直中
问题内容: 我正在尝试获取有关标准中包含的组件的信息。特别是我对阅读水平书感兴趣。我该如何引用? 问题答案: 由于上述方法并不适合所有人(包括我),因此我对其进行了更多调查,并找到了问题的根源。 一般而言,这两种方法都可以使用,但是只有在设置了的属性后才能使用。就我而言,仍然是在使用加载视图后仍然存在。 通过在属性未初始化的情况下延迟调用(使用单次侦听器)可以解决此问题。 工作样板代码:
问题我如何可以嵌入这个应用程序到SPlitPane,在左边将是另一个面板。 不幸的是,代码导致了错误的坐标,
基于此注释https://stackoverflow.com/a/29530135/1387524,我添加了一个ScrollPane,以便在画布移到可见区域之外时使用滚动。
给定一个带有一些子节点的巨大的是的内容,我如何滚动以使当前视口之外的子节点之一可见?