私はスイングが初めてです。スイングを使用してドラッグアンドドロップを実装する必要があります。現在のフレームには、さまざまなパネルが含まれています。つまり、中央パネルと左パネルには、コントロール パネル、プロパティ パネルなどのサブパネルがあります。ラベル/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];
}
}
}
});
}
ここに欠けているものがあるか教えてください。ドラッグ アンド ドロップ機能を実現するための最適なアプローチは何ですか?