我正在调试一个Java Swing应用程序,其中一个组件(在我的情况下,JPanel内的一个JPanel内的JButton)在应该时不会自动重新绘制。例如,当第一次显示窗口时,可以在那里看到JButton,但是当另一个窗口与我的应用程序的窗口重叠一段时间时,JButton就不能再被看到。Java Swing组件不会自动重绘
因为我不知道从哪里开始,所以我想知道什么是重绘Swing组件中问题的最常见原因。
我正在调试一个Java Swing应用程序,其中一个组件(在我的情况下,JPanel内的一个JPanel内的JButton)在应该时不会自动重新绘制。例如,当第一次显示窗口时,可以在那里看到JButton,但是当另一个窗口与我的应用程序的窗口重叠一段时间时,JButton就不能再被看到。Java Swing组件不会自动重绘
因为我不知道从哪里开始,所以我想知道什么是重绘Swing组件中问题的最常见原因。
“检查重绘是否在组件的外观需要更新时调用。”这是对我完全无用的东西,因为我不知道它的外观何时需要更新。 – deinocheirus
如果最小化Windows和将其带回上会发生什么开始? 您可能会尝试在您的代码中的某处调用您的jpanel.revalidate()。但是,除非我看到您的代码,否则我不知道该在哪里打电话。
如果'Swing'应用程序未在[Event-Dispatcher-Thread](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)上启动,则可能会出现这种情况:-)你是从'main'线程启动你的应用程序吗?如果您是,请您阅读该教程页面的时间:-) –
@nIcEcOw当然可以。 – deinocheirus
__“是的,当然”__是的,当然,我的应用程序正在使用主线程进行GUI相关更新。或者是周围的其他方式 ?!!! :-)不是代码负责创建和显示你的GUI,包装在'invokeLater()'内? –