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

回答編集履歴

1

日本語を訂正

2016/12/19 13:43

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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は変えてない