回答編集履歴

3

typo

2025/02/14 01:55

投稿

shiketa
shiketa

スコア4075

test CHANGED
@@ -26,13 +26,12 @@
26
26
 
27
27
  ```java
28
28
  final ScrollPane scrollPane = ...;
29
- primaryStage.setScene(new Scene(scrollPane));
30
- ...
31
29
  primaryStage.addEventHandler(WindowEvent.WINDOW_SHOWN, new EventHandler<WindowEvent>() {
32
30
  @Override
33
31
  public void handle(WindowEvent event) {
34
32
  System.out.println(scrollPane.getChildrenUnmodifiable());
35
33
  }
36
34
  });
35
+ primaryStage.setScene(new Scene(scrollPane));
37
36
  primaryStage.show();
38
37
  ```

2

追記

2025/02/14 01:54

投稿

shiketa
shiketa

スコア4075

test CHANGED
@@ -13,3 +13,26 @@
13
13
  ```
14
14
 
15
15
  あとは、お好きに。
16
+
17
+ ----
18
+
19
+ > scrollPane.getChildrenUnmodifiable()の部分で子ノードの数がゼロになっていて取得できないです。
20
+
21
+ 追記
22
+
23
+ ScrollPaneを生成した直後に参照しているのでは?
24
+ きっと、ウィンドウが表示された後でなければ、それらは取得できないでしょう。
25
+ たとえば、このタイミング。
26
+
27
+ ```java
28
+ final ScrollPane scrollPane = ...;
29
+ primaryStage.setScene(new Scene(scrollPane));
30
+ ...
31
+ primaryStage.addEventHandler(WindowEvent.WINDOW_SHOWN, new EventHandler<WindowEvent>() {
32
+ @Override
33
+ public void handle(WindowEvent event) {
34
+ System.out.println(scrollPane.getChildrenUnmodifiable());
35
+ }
36
+ });
37
+ primaryStage.show();
38
+ ```

1

typo

2025/02/14 00:14

投稿

shiketa
shiketa

スコア4075

test CHANGED
@@ -1,14 +1,14 @@
1
1
  > viewportがJava上で取得できないし、
2
2
 
3
3
  Scenic View https://github.com/JonathanGiles/scenic-view で観察すると、ScrollPaneの子ノードとして、`viewport`というスタイルクラスを持ったStackPaneが存在しています。
4
- 「おそらく」これがSceollPaneのviewportです。
4
+ 「おそらく」これがScrollPaneのviewportです。
5
5
 
6
6
  ```java
7
7
  final ScrollPane scrollPane = ...;
8
8
  ...
9
9
  scrollPane.getChildrenUnmodifiable()
10
10
  .stream()
11
- .filter(it -> it.getStyleClass().stream().collect(Collectors.toList()).contains("viewport"))
11
+ .filter(it -> it.getStyleClass().contains("viewport"))
12
12
  .forEach(it -> ...));
13
13
  ```
14
14