Comment suivre le mouvement d'une JFrame? Je voudrais enregistrer un écouteur qui serait rappelé chaque fois que JFrame.getLocation()
va retourner une nouvelle valeur.Java: comment enregistrer un écouteur qui écoute un mouvement JFrame
EDIT Voici un code indiquant que la résolution est accepté répondu mon problème:
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();
}
}
Notez que ce n'est pas une question sur la conception orientée objet, ni sur l'utilisation ou non-utilisation de * finale *, etc. La question est de savoir comment enregistrer un rappel qui peut être déclenché chaque fois que la position du JFrame change et le morceau de code est juste un hack rapide agissant comme une preuve de concept pour brancher la bonne réponse. – cocotwo