我向jpanel中动态添加一个jbutton,然后调用jpanel的validate方法,按照文档上的说法,当编辑容器的时候要调用这个方法,它会刷新容器,但事实上根本没变化,按钮显示不出来,只有调用repaint才行。为什么?

解决方案 »

  1.   

    因为jpanel需要知道新加的button的布局数据,所以jbutton加上了,但你看不到。jpanel.doLayout(); //保证jpanel中的元素可以重新计算布局数据 layout data
    jpanel.validate();
      

  2.   

    代码就是这样:
    panel.add(new JButton("hello"));
    panel.validate()
      

  3.   

    究竟repaint和updateUI,哪个是轻量级的,文档上的说法看来是错的,validate根本不起作用。
      

  4.   

    updateUI不是干这个用的,还是要用repaint方法啊。jpanel.doLayout(); //保证jpanel中的元素可以重新计算布局数据 layout data
    jpanel.validate();这个也好用。
      

  5.   

    刚碰到这个问题
    dolayout即可
    不需要再执行
    repaint界面也会更新validate从来没用过