Java:登録方法については、リスナーを聴くことができ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();
}
}
解決
JFrame jf = new JFrame();
jf.addComponentListener(new ComponentListener() {...});
あなたが探しているものを、私は考えてされます。
他のヒント
を使用 addComponentListener()
と ComponentAdapter
:
jf.addComponentListener(new ComponentAdapter() {
public void componentMoved(ComponentEvent e) {
updateText(jf, jl);
}
});
あなたは HierarchyBoundsListener
登録することができますA>あなたJFrame
上、または他の人が示唆したようにComponentListener
を使用します。
jf.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
@Override
public void ancestorMoved(HierarchyEvent e) {
updateText(jf, jl);
}
});
所属していません StackOverflow