jl[1].setForeground(Color.blue); jl[1].setText(jl[1].getText()); jl[1].repaint(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }
你的JLabel更本不会去主动刷新的,即使你调用repaint方法。 更本原因在于,Swing的刷新工作机制,必须由父组件触发,开始递给调用每个子组件的repaint方法或者是updateUI()。 结合你的代码,label.repaint()更本不会刷新你的Label,这个代码有点画蛇添足,完全可以去掉 然后在在你的最顶层组件对象上调用repaint()方法即可。……
这是两个不同的线程没有先后顺序的
这个涉及到线程问题,在GUI中要显示的东西都是有一个叫做GUI分发线程(好像是叫这个名字)的线程来完成显示及更新活动的,而这个线程是与程序的主线程相关联的,当你用sleep将主线程睡眠的同时,分发线程也跟着休眠了,所以这个时候更新事件被放置,一直等到主线程激活后,分发线程才开始工作,这个时候你的更新命令才得到执行,所以又你上面产生的结果,希望这个回答对你有用。 ……
package test; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JLabel; public class GuiTest extends JFrame { private static final long serialVersionUID = ……
62,623
社区成员
307,257
社区内容
加载中
试试用AI创作助手写篇文章吧