我是 Swing 的新手。我需要使用 swing 实现拖放。在当前框架中包含不同的面板,即中心面板和左面板有子面板,即控制面板、属性面板。我试图将标签/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];
}
}
}
});
}
请告诉我这里有没有遗漏的。实现拖放功能的最佳方法是什么?
最佳答案
这不是在 Java/Swing 中完成拖放的方式
关于 SO... 有很多例子
- Drag and Drop custom object from JList into JLabel
- Java - How to drag and drop JPanel with its components
- how to drag and drop files from a directory in java
- Java - visually drag a swing element
我还建议您查看 How to drag and drop with Java 2
关于java - 使用 swing 在两个面板之间拖放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251390/