回答編集履歴
1
日本語を訂正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
中央に表示されるかどうかは座標設定の問題なのでsetLocationの指定を変えて試してみればよいと思います。
|
2
2
|
|
3
3
|
難しいのは背景を透明にしたJTextFieldの再描画の振る舞いの方だと思います。質問者さんのコードは不自然に感じる点が多く(不要なオブジェクトを生成していたりオブジェクト階層の生成順序がよくわからなかったり非推奨のメソッドを敢て使っていたり)自分には解析が難しそうだったのでなぜうまくいかないかの原因を指摘することはできませんでした。申し訳ないですがコードは実装しなおしました。
|
4
|
-
ポイントは以下のようなJPanelとJTextFieldの再描画メカニズムだと思います。おそらく質問者さんのコードのどこかにIMEモードでJTextField上にインライン入力した際の再描画がおかしくなる原因があるのだと思います。以下のような階層
|
4
|
+
ポイントは以下のようなJPanelとJTextFieldの再描画メカニズムだと思います。おそらく質問者さんのコードのどこかにIMEモードでJTextField上にインライン入力した際の再描画がおかしくなる原因があるのだと思います。以下のような階層、不透明/透明、背景色とすると期待通りに動くようです。
|
5
5
|
|
6
6
|
```
|
7
7
|
JPanel(背景の画像を描画する) -> setOpaque(true); // backgroundは変えてない
|