关于Swing控件的渲染问题

例子:

final JButton btn = new JButton();
btn.setText("OK");
btn.addMouseListener(new MouseListener(){
	public void mouseClicked(MouseEvent e) {
		btn.setEnale("false");
		system.out.print("执行代码段....");
		btn.setEnale("true");
	}
});
上面这段代码无法实现让按钮变灰的效果。
原因:因为按钮变灰的相当于重新渲染,而重新渲染需要另外启一个线程,当现在代码执行的情况是,渲染是在主线程中执行,所以没有效果。


正确应该多开一个线程,代码如下:
final JButton btn = new JButton();
btn.setText("OK");
btn.addMouseListener(new MouseListener(){
  public void mouseClicked(MouseEvent e) {
    new Thread(){
      public void run(){
    
       btn.setEnale("false");
	  system.out.print("执行代码段....");
	  btn.setEnale("true");
      }
    }   } });



posted @ 2021-07-30 15:09  信铁寒胜  阅读(108)  评论(0编辑  收藏  举报