MousePresss メソッドは、JLabel ドラッグ アンド ドロップでのマウスリリースのトリガーを禁止しますか?

Mary-Kate Olsen
リリース: 2024-10-24 02:41:29
オリジナル
763 人が閲覧しました

Does MousePressed Method Inhibit MouseReleased from Triggering in JLabel Drag and Drop?

ドラッグ アンド ドロップの JLabel マウス イベント

質問:

マウス イベント オーバーライドによる JLabel のドラッグ アンド ドロップの実装の場合、mousePressed イベント内で定義されている場合、マウスリリースイベントはマウスを放したときにトリガーされません。何か間違っていることがあるでしょうか?"

コード:

<code class="java">Thumbnails[I_Loop].addMouseListener( new MouseAdapter() {
    public void  mouseReleased(MouseEvent me) {
           System.out.println("here mouse released");
      }
    public void mousePressed(MouseEvent me) {
        System.out.println("here mouse pressed");
        JComponent comp = (JComponent) me.getSource();
        TransferHandler handler = comp.getTransferHandler();
        handler.exportAsDrag(comp, me, TransferHandler.COPY);
    });</code>
ログイン後にコピー

答え:

@Thomas の解決策

1. JLayeredPane の使用:

この例では、JLayeredPane を使用してコンポーネントをドラッグする方法を示します。このバリエーションは、同じ概念を拡張しています。一方、より最近の例では同様のアプローチが使用されています。

2. MouseMotionListener の使用:
<code class="java">// ...
private Point mousePt;
private Point dragPt;
private Rectangle bounds;

public MouseDragTest() {
    this.addMouseMotionListener(new MouseMotionAdapter() {

        @Override
        public void mouseDragged(MouseEvent e) {
            int dx = e.getX() - mousePt.x;
            int dy = e.getY() - mousePt.y;
            dragPt.setLocation(dragPt.x + dx, dragPt.y + dy);
            super.mouseDragged(e);
        }
    });
    this.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent e) {
            bounds = getBounds();
            Point p = SwingUtilities.convertPoint(this, e.getPoint(), Bounds.Parent);
            if (bounds.contains(p)) {
                dragPt = p;
                mousePt = e.getPoint();
            }
        }
    });
    // ...
}</code>
ログイン後にコピー

このコードは、MouseMotionListener の使用を示しています。このより複雑な例では同じ原理が使用されています。

コード:

以上がMousePresss メソッドは、JLabel ドラッグ アンド ドロップでのマウスリリースのトリガーを禁止しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!