1

JPopupMenu オブジェクトがあります。その動作は座標に依存します。親コンテナに対する相対的な位置を取得するにはどうすればよいですか?

4

3 に答える 3

0

のメソッド (mouseReleased など)で、現在の位置を含むオブジェクトをMouseListener受け取る必要があります。MouseEventこれらの値を使用したくない場合は、Component#getLocationメソッドを使用して試すことができます。それ以外の場合Component#getLocationOnScreenは絶対位置を返しますが、相対位置を計算する必要があります。

于 2011-11-18T13:38:45.293 に答える
0

Component#getLocationメソッドもメソッドも機能せずComponent#getLocationOnScreen、フィールドdesiredLocationX/desiredLocationYにアクセスできないため、 JPopupMenu() を次のように拡張しました。

contextMenu = new JPopupMenu(){
    private Point desiredLocation;

    /**
    * Override Component#getLocation, since it always returns 0,0.
    */
    @Override
    public Point getLocation() {
        return desiredLocation;
    }

    @Override
    public void show(Component invoker, int x, int y) {
        desiredLocation = new Point(x, y);
        super.show(invoker, x, y);
    }
};
于 2018-07-10T13:09:48.137 に答える