如何跟踪JFrame本身的运动?我想注册一个听众,每回JFrame.getLocation()
就会返回一个新的值。Java:如何注册侦听JFrame运动的侦听器
编辑这里是显示所接受的回答是解决我的问题代码:
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();
}
}
注意,这不是一个关于面向对象的设计,也没有关于使用或不使用* *决赛等问题是有关如何注册一个回调疑问,可以在每次JFrame的位置发生变化时触发,并且代码片段只是一个快速入侵,充当概念证明以插入正确答案。 – cocotwo 2010-03-11 18:58:31