JFrame 자체의 움직임을 어떻게 추적 할 수 있습니까? 매번 다시 호출 할 청취자를 등록하고 싶습니다. JFrame.getLocation()
이 새로운 값을 반환 할 것입니다.자바 : 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