回答編集履歴
3
大幅に修正。awtが頭にこびりついてた。
test
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
|
1
|
+
とんちんかんなことを言ってしまったので、大幅に修正します。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
paintComponentメソッドは、画面への描画が必要な際に、自動的に呼び出されます。
|
6
6
|
|
7
|
-
|
7
|
+
呼び出されるタイミングとしては、setVisibleが呼ばれたとき、ウィンドウサイズが変更されたときなどです。
|
8
8
|
|
9
|
-
|
9
|
+
質問者様の最初のプログラムでも、画面表示後にぐいぐいウィンドウを引き延ばせば、ともすれば描画が行われたかもしれません。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
ただし、paintメソッドはユーザーが意識的に呼び出すために作られたものではありません。
|
14
|
-
|
15
|
-
|
13
|
+
[こちらのサイト](https://allabout.co.jp/gm/gc/80697/)に書いてありますように、明示的にpaintComponentを呼び出したい際には、repaintメソッドの呼び出しが必要です。
|
16
14
|
|
17
15
|
|
18
16
|
|
@@ -32,15 +30,9 @@
|
|
32
30
|
|
33
31
|
|
34
32
|
|
35
|
-
---
|
36
|
-
|
37
|
-
paintメソッドをオーバーライドし、適当に`Called!`とでも表示するようにすれば、呼び出されるタイミングがわかります。
|
38
|
-
|
39
|
-
描画が想定通りにならない場合、こういう泥臭いデバッグ(いわゆるprintデバッグ)が役に立ちます。
|
40
33
|
|
41
34
|
|
42
|
-
|
43
|
-
以降、
|
35
|
+
以降、最初の解答。
|
44
36
|
|
45
37
|
|
46
38
|
|
2
解説の変更
test
CHANGED
@@ -1,6 +1,54 @@
|
|
1
|
-
|
1
|
+
結果的に的外れな解答をしてしまったので、修正します。
|
2
2
|
|
3
|
+
|
4
|
+
|
5
|
+
JavaのGUIにはpaintメソッドというものがありまして、これが呼ばれたときに画面への描画が実行されます。
|
6
|
+
|
7
|
+
paintメソッドは自動的に呼び出され、例えばsetVisibleが呼ばれたとき、画面サイズが変更されたときなどに呼ばれます。
|
8
|
+
|
9
|
+
ひょっとしたら、元のプログラムでも、ウィンドウをマウスでぐいぐい引っ張れば正しく表示されたかもしれません。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
ただし、paintメソッドはユーザーが意識的に呼び出すために作られたものではありません。
|
14
|
+
|
15
|
+
画面の再描画を意図的に行いたい場合は、repaintメソッドを呼び出します。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
0. フレームの初期化
|
20
|
+
|
21
|
+
0. setVisible(true);
|
22
|
+
|
23
|
+
0. パネルの初期化
|
24
|
+
|
25
|
+
0. パネルをadd
|
26
|
+
|
27
|
+
0. **repaint()**
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
こうすれば、正しい表示が得られるかと思います。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
---
|
36
|
+
|
37
|
+
paintメソッドをオーバーライドし、適当に`Called!`とでも表示するようにすれば、呼び出されるタイミングがわかります。
|
38
|
+
|
39
|
+
描画が想定通りにならない場合、こういう泥臭いデバッグ(いわゆるprintデバッグ)が役に立ちます。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
以降、以前の解答。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
---
|
48
|
+
|
49
|
+
swingのJComponentクラスは、awtのComponentクラスを継承しているのですが、
|
50
|
+
|
3
|
-
|
51
|
+
Componentクラスには、addメソッドとremoveメソッドが既に存在しています。
|
4
52
|
|
5
53
|
|
6
54
|
|
1
作文的にひどかった
test
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
swingの`JComponent`クラスは、awtの`Component`クラスを継承しているのですが、
|
2
2
|
|
3
|
-
`Component`クラスには、
|
3
|
+
`Component`クラスには、`add`メソッドと`remove`メソッドが既に存在しています。
|
4
4
|
|
5
5
|
|
6
6
|
|
7
7
|
ご自身でメソッドを定義する際は、ほかのクラスのメソッドと名前が衝突しないようにしてください。
|
8
|
+
|
9
|
+
動詞1単語の命名は簡潔ですが、このような問題が生じる場合がしばしばあります。
|