如何在JFrame中获得改变窗口大小的事件,就是我用鼠标拖动窗口边框改变窗口大小时,如何在程序中获得它引发的事件,该实现哪个接口,分不够可以再加,最好有很简单的代码说明,谢谢。

解决方案 »

  1.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Frame1 extends JFrame {
      JScrollPane jScrollPane1 = new JScrollPane();
      JTree jTree1 = new JTree();  public Frame1()
      {
        try
        {
          jbInit();
        }
        catch(Exception ex)
        {
          ex.printStackTrace();
        }
      }  void jbInit() throws Exception
      {
        this.getContentPane().setLayout(null);
        jScrollPane1.setBounds(new Rectangle(118, 9, 189, 264));
        this.addComponentListener(new Frame1_this_componentAdapter(this));
        this.getContentPane().add(jScrollPane1, null);
        jScrollPane1.getViewport().add(jTree1, null);
      }
      public static void main(String args[])
      {
        Frame1 frame1= new Frame1();
        frame1.show();
      }  void this_componentResized(ComponentEvent e) {
         System.out.println("大小改变");
      }}
    class Frame1_this_componentAdapter extends java.awt.event.ComponentAdapter {
      Frame1 adaptee;  Frame1_this_componentAdapter(Frame1 adaptee) {
        this.adaptee = adaptee;
      }
      public void componentResized(ComponentEvent e) {
        adaptee.this_componentResized(e);
      }
    }
      

  2.   

    1. 写一个响应方法,响应窗口大小改变事件 public void sizeChanged()
    2. 写一个类继承componentAdapter,其中重载 componentResized事件。
    3. 给frame加上一个listener:   frame.addComponentListener(new ComponentListener(this));//期中ComponentListener就是第二步中写的类的一个实例