coc*_*two 3 java swing listener jframe
如何跟踪JFrame本身的移动?我想注册一个每次回调都会JFrame.getLocation()返回一个新值的监听器.
编辑这是一个代码,显示接受的答案正在解决我的问题:
import javax.swing.*;
public class SO {
public static void main( String[] args ) throws Exception {
SwingUtilities.invokeAndWait( new Runnable() {
public void run() {
final JFrame jf = new JFrame();
final JPanel jp = new JPanel();
final JLabel jl = new JLabel();
updateText( jf, jl );
jp.add( jl );
jf.add( jp );
jf.pack();
jf.setVisible( true );
jf.addComponentListener( new ComponentListener() {
public void componentResized( ComponentEvent e ) {}
public void componentMoved( ComponentEvent e ) {
updateText( jf, jl );
}
public void componentShown( ComponentEvent e ) {}
public void componentHidden( ComponentEvent e ) {}
} );
}
} );
}
private static void updateText( final JFrame jf, final JLabel jl ) {
// this method shall always be called from the EDT
jl.setText( "JFrame is located at: " + jf.getLocation() );
jl.repaint();
}
}
Run Code Online (Sandbox Code Playgroud)
使用addComponentListener()了ComponentAdapter:
jf.addComponentListener(new ComponentAdapter() {
public void componentMoved(ComponentEvent e) {
updateText(jf, jl);
}
});
Run Code Online (Sandbox Code Playgroud)
JFrame jf = new JFrame();
jf.addComponentListener(new ComponentListener() {...});
Run Code Online (Sandbox Code Playgroud)
我想是你正在寻找的.