如何实现鼠标监听器
how to impliment mouse listener
有点菜鸟问题,但话又说回来,我是菜鸟。我正在尝试实现一种 "universal" 鼠标侦听器。也就是说,当我单击屏幕上的任何对象时,它 运行 是特定数量的代码。我有下面的当前解决方案,但是我想要 运行 的代码对于 10 个不同的对象是相同的,所以这变得相当乏味。
difference2 = new JLabel(new ImageIcon("transparent.png"));
difference2.setBounds(645,490,10,10); //left, top, width, height
contentPane.add(difference2);
difference2.setVisible(true);
difference2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e) {
//code
}
});
我知道我可以创建一个单独的方法,如下所示
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"this would be nice");
}
但我不知道如何为它的每个对象设置鼠标侦听器。 JOptionPane 目前什么都不做。
您可以创建一个扩展 MouseAdapter
的匿名 class 的实例,并将其分配给您可以重用的变量(在本例中为 myMouseListener
):
MouseListener myMouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"this would be nice");
}
};
difference2.addMouseListener(myMouseListener);
aSecondObject.addMouseListener(myMouseListener);
aThirdObject.addMouseListener(myMouseListener);
...
我可能误解了你的问题,但如果你想在不同的对象上使用相同的鼠标监听器,你可以将监听器的实例存储在一个变量中一次,然后将它添加到你想要它添加到的任何 gui 对象中。
MouseListener ml = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {//code}
@Override
public void mousePressed(MouseEvent e) {//code}
@Override
public void mouseExited(MouseEvent e) {//code}
@Override
public void mouseEntered(MouseEvent e) {//code}
@Override
public void mouseClicked(MouseEvent e) {//code}
};
JLabel j1 = new JLabel("Label1");
j1.addMouseListener(ml);
JLabel j2 = new JLabel("Label2");
j2.addMouseListener(ml);
有点菜鸟问题,但话又说回来,我是菜鸟。我正在尝试实现一种 "universal" 鼠标侦听器。也就是说,当我单击屏幕上的任何对象时,它 运行 是特定数量的代码。我有下面的当前解决方案,但是我想要 运行 的代码对于 10 个不同的对象是相同的,所以这变得相当乏味。
difference2 = new JLabel(new ImageIcon("transparent.png"));
difference2.setBounds(645,490,10,10); //left, top, width, height
contentPane.add(difference2);
difference2.setVisible(true);
difference2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e) {
//code
}
});
我知道我可以创建一个单独的方法,如下所示
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"this would be nice");
}
但我不知道如何为它的每个对象设置鼠标侦听器。 JOptionPane 目前什么都不做。
您可以创建一个扩展 MouseAdapter
的匿名 class 的实例,并将其分配给您可以重用的变量(在本例中为 myMouseListener
):
MouseListener myMouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"this would be nice");
}
};
difference2.addMouseListener(myMouseListener);
aSecondObject.addMouseListener(myMouseListener);
aThirdObject.addMouseListener(myMouseListener);
...
我可能误解了你的问题,但如果你想在不同的对象上使用相同的鼠标监听器,你可以将监听器的实例存储在一个变量中一次,然后将它添加到你想要它添加到的任何 gui 对象中。
MouseListener ml = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {//code}
@Override
public void mousePressed(MouseEvent e) {//code}
@Override
public void mouseExited(MouseEvent e) {//code}
@Override
public void mouseEntered(MouseEvent e) {//code}
@Override
public void mouseClicked(MouseEvent e) {//code}
};
JLabel j1 = new JLabel("Label1");
j1.addMouseListener(ml);
JLabel j2 = new JLabel("Label2");
j2.addMouseListener(ml);