我使用的是JBuilder2006
问题如下:
    有10个button,每个button都会弹出一个frame。
请问如何在按下其中一个button时关闭之前其他button弹出的所有frame而只显示它本身所要弹出的frame?
如果可以请附上具体代码
谢谢!

解决方案 »

  1.   

    把其它的frame.dispose()就好了啊,
      

  2.   

    数组或LIST 遍历一下关吧。
      

  3.   

    JFrame  frame[] = new JFrame()[10];
    int currentFrameIndex = 0;
    .....onClick(){
    for(int i=0;i<10;i++){
       if(currentFrameIndex!=i){
          frame[i].setVisible(false);
        }
    }
    frame[currentFrameIndex].setVisible(false);
    }
      

  4.   

    既然同一时间只有一个Frame被打开, 那么不需要数组了.
    在主Frame里面维持一个FrameInstance等于当前打开的从Frame.
    当某个button被按下时, 如果FrameInstance != null, frameInstance.dispose(), hide(), setVisible(false)?随便你了.
    然后打开新的Frame, frameInstance = newFrame.注意如果frame关闭不是用dispose, 那么请在button中维护关联的frame, 以便下次打开只要show()/setVisible(true)就行了.
    代价是耗点内存(实际上挺大), 如果dispose了, 那么下次请重新构造, 代价是耗点时间(重新构造总是需要时间的么), 如果frame上没有很多组件, 没有未保存的数据, 建议dispose掉.
      

  5.   

    感谢楼上的2位
    貌似9楼的代码稍微有点小问题
    是不是该这样:frame[currentFrameIndex].setVisible(true); ?
      

  6.   

    this.dispose();
    frame2.setVisible(true);