我正在使用Java编写一个简单的绘图程序,希望能在JFrame组件调整大小时调用某些方法。然而,我找不到像windowResizedListener这样的方法或类似于 windowResizedEvent 的事件。我该怎么办?
实现一个带有 componentResized()
的 ComponentAdapter
:
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent componentEvent) {
// do stuff
}
});
覆盖ComponentAdapter
的特定方法是实现ComponentListener
所有方法的方便替代方法。 here中看到了几个例子,展示了API中提到的“创建监听器对象的便利性”。
ComponentListener
。这是一个自定义的JPanel类,您可以使用它在GUI中将窗口大小写入JLabel中。只需在主方法中实现此类并将其添加到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) {
}
}
}
//Detect windows changes
window.addComponentListener(new ComponentAdapter( ) {
public void componentResized(ComponentEvent ev) {
label.setText(ev.toString());
}
});
ComponentListener
的所有方法,可以改用ComponentAdapter
。它具有相同的接口,但是提供了默认空实现,更加方便。 - Drew Noakes