基本上我有一个用于简单文本编辑器的 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() 结果打印到控制台,它会告诉我应该显示的标题,但直到焦点在窗口上丢失时才会显示
编辑2:
事实证明这只是我的 jdk 中的一个错误。重新安装jdk解决了这个问题。很抱歉误导了大家,感谢您的回复。