1

私はスイングが初めてです。スイングを使用してドラッグアンドドロップを実装する必要があります。現在のフレームには、さまざまなパネルが含まれています。つまり、中央パネルと左パネルには、コントロール パネル、プロパティ パネルなどのサブパネルがあります。ラベル/jbuttons/画像をコントロール パネルから中央パネルにドラッグ アンド ドロップしようとしています。これらのパネルは BorderLayout を使用します。

ここに画像の説明を入力

マウスイベントでドラッグアンドドロップしてみました。 コントロールパネルにマウスリスナーを置きました。ラベル/画像を中央パネルにドロップすると、-X & Y Cooridnates が読み取られ、コードが確認されます

private void mak_lis(final SLabel l) {
   l.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent m) {
       System.out.println("mak_lis Mouse mousePressed");

    setCursor(yd);
    // l.setBorder(new MatteBorder(1,1,1,1,Color.black));

    }
    public void mouseReleased(MouseEvent m) {
       l.setBorder(null);
       setCursor(dc);
       System.out.println("mak_lis Mouse mouseReleased");
       int x = -(m.getX() + l.getX() - leftPanel.getX());
       int y = m.getY() + l.getY() + leftPanel.getY();
       System.out.println("mak_lis Mouse mouseReleased" + "x" + x+ "y" + y);
       if (y > 0 && x > 0 && y < leftPanel.getHeight() && x < leftPanel.getWidth()) {
        leftPanel.add(new_lab(l, x, y));
                leftPanel.repaint();
        Component[] components1 = leftPanel.getComponents();
        Component component = null;
        for (int i = 0; i < components1.length; i++) {
          // System.out.println("components iii"+ components1[i]);
        component = components1[i];

            }

    }
}

});
}

ここに欠けているものがあるか教えてください。ドラッグ アンド ドロップ機能を実現するための最適なアプローチは何ですか?

4

1 に答える 1

4

これは、Java/Swing でドラッグ アンド ドロップを行う方法ではありません

SOにはたくさんの例があります...

Java 2でドラッグアンドドロップする方法をチェックアウトすることもお勧めします

于 2013-01-10T06:20:17.703 に答える