如何跟蹤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