我正在使用java编写一个简单的绘图程序,我想在调整JFrame组件大小时调用一些方法。但我找不到像windowResizedListener这样的方法或像windowResizedEvent这样的事件。
我该怎么办?!
答案 0 :(得分:48)
使用componentResized()
实施ComponentAdapter
:
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent componentEvent) {
// do stuff
}
});
答案 1 :(得分:18)
覆盖ComponentAdapter
的特定方法是实现ComponentListener
的所有方法的便捷替代方法。
答案 2 :(得分:3)
答案 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());
}
});