窗口调整大小事件?

时间:2010-02-20 19:08:47

标签: java swing

我正在使用java编写一个简单的绘图程序,我想在调整JFrame组件大小时调用一些方法。但我找不到像windowResizedListener这样的方法或像windowResizedEvent这样的事件。

我该怎么办?!

5 个答案:

答案 0 :(得分:48)

使用componentResized()实施ComponentAdapter

frame.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent componentEvent) {
        // do stuff
    }
});

答案 1 :(得分:18)

覆盖ComponentAdapter的特定方法是实现ComponentListener的所有方法的便捷替代方法。

答案 2 :(得分:3)

您必须使用componentResized中的ComponentListener

答案 3 :(得分:1)

要访问Window Re-size方法事件,我在子类中使用了Implement ComponentListener。这是一个自定义JPanel类,可用于将窗口大小写入GUI内的JLabel。只需在main方法中实现此类并将其添加到JFrame中,您就可以调整窗口大小,它将动态显示窗口的像素大小。 (注意,您必须将JFrame对象添加到类中)

package EventHandledClasses;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentListener;
public class DisplayWindowWidth extends JPanel{
JLabel display;
JFrame frame;
public DisplayWindowWidth(JFrame frame){
        display = new JLabel("---");
        this.frame = frame;

        frame.addComponentListener(new FrameListen());
        add(display);
        setBackground(Color.white);
    }

    private class FrameListen implements ComponentListener{
        public void componentHidden(ComponentEvent arg0) {
        }
        public void componentMoved(ComponentEvent arg0) {   
        }
        public void componentResized(ComponentEvent arg0) {
            String message = " Width: " +
            Integer.toString(frame.getWidth());
            display.setText(message);

        }
        public void componentShown(ComponentEvent arg0) {

        }
    }
}

答案 4 :(得分:0)

ComponentAdapter

的示例
//Detect windows changes
window.addComponentListener(new ComponentAdapter( ) {
  public void componentResized(ComponentEvent ev) {
   label.setText(ev.toString());
  }
});