所以我试图在JFrame周围单击并拖动JLabel.以下代码允许在屏幕上的任何位置按下/拖动鼠标时在屏幕上移动JLabel,但我不知道如何添加第二个ActionListener以检查鼠标是否在标签上单击,假设是解决方案.
我想在屏幕上有多个JLabel,以便移动的唯一标签是鼠标单击并正在拖动的标签.
谢谢.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class test extends JFrame implements MouseMotionListener {
private JPanel panel = new JPanel(null);
private JLabel dragLabel = new JLabel("drag test");
private int mouseX = 200;
private int mouseY = 200;
public test() {
this.add(panel);
panel.setBackground(Color.WHITE);
panel.add(dragLabel);
dragLabel.setForeground(Color.RED);
dragLabel.setBounds(mouseX, mouseY, 100, 50);
panel.addMouseMotionListener(this);
}
@Override
public void mouseDragged(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
dragLabel.setBounds(mouseX, mouseY, 100, 50);
}
@Override
public void mouseMoved(MouseEvent e) {}
public static void …Run Code Online (Sandbox Code Playgroud) 如果你们两个都有两个JLabels JFrame同时添加了相同的MouseListener点击事件,那么如何JLabel在不创建第二个actionlistener的情况下判断哪个被点击了?
注意:两个标签上都写有相同的文字,因此不能用来区分它们.