请高手帮我分析一下,下面这段程序为什么会进入死循环?
mainPanel.addComponentListener(new ComponentAdapter() {
      public void componentResized(ComponentEvent e) {
        Dimension d = mainPanel.getPreferredSize();
        if (d.width < 200) {
          mainPanel.setSize(200, d.height);
        }
        if (d.height < 400) {
          mainPanel.setSize(d.width, 400);
        }
      }
    });

解决方案 »

  1.   

    每次调整大小 都会触发componentResized
    而componentResized又会调整大小 
    那肯定会产生死循环
      

  2.   

    每次调整大小 都会触发componentResized
    而componentResized又会调整大小 
    那肯定会产生死循环
      

  3.   

    每次调整大小 都会触发componentResized
    而componentResized又会调整大小 
    那肯定会产生死循环
      

  4.   

    是不是mainPanel.setSize(200, d.height)又触发了componentResize事件,
    无限循环下去了?!
      

  5.   

    是不是mainPanel.setSize()又触发了componentResize事件,
    无限循环下去了?!
      

  6.   

    是不是mainPanel.setSize()又触发了componentResize事件,
    无限循环下去了?!
      

  7.   

    ...哪里有循环?
     if (d.width < 200) {
              mainPanel.setSize(200, d.height);
            }
            if (d.height < 400) {
    如果d.width>200&&d.height>400呢?
      

  8.   

    问题已经找到:主要是这两句话引起的
    Dimension d = mainPanel.getPreferredSize(); mainPanel.setSize(d.width, 400);
    很多情况下:
      preferredSize<<size