Swing动态刷新

         可能大家都试过在swing的事件监听中动态添加组件,但是JFrame却不会动态显示,只有变大变小(实际是重画了)才会显示,有些人说repaint,updateUI可以,但是我试了一下还是不行。于是用validate...发现可以了

import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Ss extends JFrame{
	Container con=this.getContentPane();
	JButton jb1=new JButton("jb1");
	JButton jb2=new JButton("jb2");
	JLabel jl1=new JLabel("jl1");
	FlowLayout gly=new FlowLayout();
	JPanel jp=new JPanel(gly);
	public Ss(){
		con.add(jp);
		
		jp.add(jb1);
		jp.add(jb2);
		
		MyListener ml=new MyListener();
		jb1.addMouseListener(ml);
		this.setSize(200,200);
		this.setVisible(true);		
	}

	private class MyListener extends MouseAdapter{
		@Override
		public void mouseClicked(MouseEvent e) {
			// TODO Auto-generated method stub
			  try
			           {
				  //主要就是下面的invalidate和validate
				  //当然,用jp来invalidate和validatae也是可以的
			                    con.invalidate();
			        			JButton jb3=new JButton("jb3");
			        			jp.add(jb3);
			        			con.validate();		           }
			          catch (Exception ex)
		           {
			            ex.printStackTrace();              
			          } 		
		}	
	}
	public static void main(String s[]){
		Ss sss=new Ss();
		sss.setVisible(true);
	}
}
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值