teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

リサイズ処理を行う処理をChangeListenerの中に移しました。

2016/07/16 15:28

投稿

argius
argius

スコア9396

answer CHANGED
@@ -5,32 +5,29 @@
5
5
  横方向のリサイズだけなら、`scene.heightProperty().addListener...`は無くても良いかも知れません。
6
6
 
7
7
  ```lang-java
8
+ // インポート省略
9
+
8
10
  // ここを置き換える
9
11
  // stage.setScene(new Scene(root));
10
12
 
11
- Runnable resizePanes = () -> {
13
+ ChangeListener<Number> windowResizedListener = new ChangeListener<Number>() {
14
+ @Override
15
+ public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
12
- double x = stage.getWidth();
16
+ double x = stage.getWidth();
13
- double y = stage.getHeight();
17
+ double y = stage.getHeight();
14
- double cx;
18
+ double cx;
15
- cx = x * 7 / 10;
19
+ cx = x * 7 / 10;
16
- drawPane.setPrefWidth(cx);
20
+ drawPane.setPrefWidth(cx);
17
- drawPane.setPrefHeight(y);
21
+ drawPane.setPrefHeight(y);
18
- operatePane.setLayoutX(cx);
22
+ operatePane.setLayoutX(cx);
19
- cx = x * 3 / 10;
23
+ cx = x * 3 / 10;
20
- operatePane.setPrefWidth(cx);
24
+ operatePane.setPrefWidth(cx);
21
- operatePane.setPrefHeight(y);
25
+ operatePane.setPrefHeight(y);
26
+ }
22
27
  };
23
28
  Scene scene = new Scene(root);
24
- scene.widthProperty().addListener(new ChangeListener<Number>() {
29
+ scene.widthProperty().addListener(windowResizedListener);
25
- @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
26
- resizePanes.run();
27
- }
28
- });
29
- scene.heightProperty().addListener(new ChangeListener<Number>() {
30
+ scene.heightProperty().addListener(windowResizedListener);
30
- @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
31
- resizePanes.run();
32
- }
33
- });
34
31
  stage.setScene(scene);
35
32
  ```
36
33
 
@@ -39,4 +36,4 @@
39
36
  参考にしたページ:
40
37
 
41
38
  How to add a window resize listener to JavaFX scene
42
- [https://blog.idrsolutions.com/2012/11/adding-a-window-resize-listener-to-javafx-scene/](https://blog.idrsolutions.com/2012/11/adding-a-window-resize-listener-to-javafx-scene/)
39
+ [https://blog.idrsolutions.com/2012/11/adding-a-window-resize-listener-to-javafx-scene/](https://blog.idrsolutions.com/2012/11/adding-a-window-resize-listener-to-javafx-scene/)

1

「heightPropertyは無くても良いかも知れません」を追記しました。

2016/07/16 15:28

投稿

argius
argius

スコア9396

answer CHANGED
@@ -2,6 +2,7 @@
2
2
  JavaFXの場合だとどうするのが定番なのか分からないので調べてみました。
3
3
 
4
4
  もうちょっと直観的にできそうなんですけど、とりあえず判明した方法で例を書いてみます。
5
+ 横方向のリサイズだけなら、`scene.heightProperty().addListener...`は無くても良いかも知れません。
5
6
 
6
7
  ```lang-java
7
8
  // ここを置き換える