基本的に、私は単純なテキストエディタ用のJFrameを持っています。作業中のファイル名がタイトルに表示されます。そこで、必要に応じてタイトルを変更するコードを設定すると、問題なく呼び出されます。
問題は、コードが呼び出された後、JFrameのタイトルが変更されないことです。getTitle()関数とすべてが、タイトルが変更されていることを示します。タイトルが実際にグラフィカルに変更されるのは、JFrameに焦点を合わせたときだけです。
私が実装した迅速で汚い(非常にそうな)修正は、toBack()に続いてtoFront()であり、事実上フォーカスを失うことを強制しました-これは非常に醜い方法でトリックを行います。
私はinvalidate()とvalidate()、さまざまなrepaint()呼び出し、およびsetVisible(true)を試しましたが、どれもうまくいきません。
私はいくつかの検索を行いましたが、解決策を見つけることができないようです。それは小さなエラーですが、厄介なものです。誰かが洞察を持っていますか?
これが私が使用するコードです
private void() updateTitle() {
setTitle(((filename == null) ? "untitled" : filename) + ((unsaved) ? "*" : ""));
toBack();
toFront();
}
これはすべて、JFrameを拡張するクラス内にあります。
編集:
ループやスレッド、またはEDTを拘束するものがないことは言及する価値があります。単純で単純なもの。これを試してデバッグするために、すべてのリスナーとすべてを無効にしました。SetTitleは、プログラムの他の場所で呼び出されています。getTitle()の結果をコンソールに出力すると、表示されるはずのタイトルが表示されますが、ウィンドウでフォーカスが失われるまで表示されません。
edit2:
それは私のjdkの単なるエラーであることがわかりました。jdkを再インストールすると、問題が修正されました。誤解を招く恐れがあります。ご回答ありがとうございます。