你的做法真古怪
第一,习惯上按钮应该在init()中添加,而不是在jpanel的paint中
第二,动态删除组件的调用是Container的remove(int index)和removeAll();
比如:jp.remove(2);
      jp.validate();
      jp.repaint();

解决方案 »

  1.   

    xioyoo(xioyoo):谢谢大虾的关注
    关于您说的第一点,我上面的代码只是一部分,是为了程序其他地方repaint方便的。
    第二点,ArrayList中放的是我已经动态添加的按钮,所以删除也得在rayList中删除。我得想法是,删除ArrayList中的某个按钮之后,再把这个ArrayList中的其他元素都重画出来,以实现动态删除的效果。
    我想这样的功能应该可以实现的,就是代码不对,还望指点一二,谢谢!如果可以解决,我另有高分相赠.
      

  2.   

    jp.remove(2);
    jp.validate();
    jp.repaint();
    还不行。
    panel的布局要得新加上的。
      

  3.   

    public void delStep()
    {
    jp.remove(2);//add this line
    StepCollection.remove(2);//2 is for test
    jp.validate();
    jp.repaint();
    }
      

  4.   

    gja106(中文字符) 
    ---panel的布局要得新加上的
    我不太理解,可以解释一下吗?
    ---以前作过实现
    垂涎欲滴,可以给我点源代码看看吗?xioyoo(xioyoo):用jp.remove(2)可以删除一个按钮,但我不能保证jp.remove(2)和StepCollection.remove(y)中x,y的对应关系;而且,用jp.remove,重画后按钮的大小都变了,不知道该怎么解决?
    谢谢二位的关注!
      

  5.   

    一定要删除吗?
    setVisible(false)不可以吗?