Java 如何将MouseListener添加到actionPerformed?

Java 如何将MouseListener添加到actionPerformed?,java,swing,actionlistener,jlabel,mouse-listeners,Java,Swing,Actionlistener,Jlabel,Mouse Listeners,我不知道如何将mouseListener(mouseClicked、mouseenterned等)添加到我的actionPerformed中。我只学会了如何从JButton添加动作,但mouseListener在JLabel中 下面是代码: test = new JLabel (ikona); test.setBounds(200, 200, 100, 100); add(test); test.addMouseListener(new MouseListener()

我不知道如何将mouseListener(mouseClicked、mouseenterned等)添加到我的actionPerformed中。我只学会了如何从JButton添加动作,但mouseListener在JLabel中

下面是代码:

test = new JLabel (ikona);
    test.setBounds(200, 200, 100, 100);
    add(test);
    test.addMouseListener(new MouseListener()
    {

        public void mouseClicked(MouseEvent e) {
            System.out.println(ikona2);

        }

        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub

        }
以及:

“przycsik,przycisk2,przycisk3”是JButton,我尝试用JLAbel(“test”)做一些事情,但我不知道如何解决这个问题

对不起,我的英语

编辑:对于JButton,我使用它来查看我的JFrame中的操作:

public void actionPerformed(ActionEvent arg0) 
{
    Object Zrodlo = arg0.getSource();
    if (Źródło==przycisk)
    {
    wyswietlacz.setText(new Date().toString());
    //System.out.println(new Date());
    }
    else if (Źródło==przycisk2)
    {
        dispose();
    }
我想用我的JLabel和mouseListener做同样的事情。我想看看哪个鼠标/光标哪个鼠标侦听器。我想将图标(gif)添加到JLabel,并使用MouseListener将icon1更改为icon2示例mouseClicked或mousePressed。如果我使用:

test.addMouseListener(new MouseListener()
    {

        public void mouseClicked(MouseEvent e) {
            System.out.println(ikona2);

        }

我只在Eclipse控制台中看到我的“ikona2”的源代码。我想在我的JFrame中看到动作。

您不能将这两个动作侦听器(MouseListener和ActionListener)组合在一起。您可以在JLabel和JButton上添加鼠标侦听器。无论如何,都不允许向JLabel添加ActionListener。您可以做的是创建一个MouseListener来处理JLabel和JButton的事件。以下是一个例子:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JLabel;

public class MouseListenerTest extends javax.swing.JFrame {
    private static final long serialVersionUID = 3109442737770802801L;

    public static void main(String[] args) {
        MouseListenerTest t = new MouseListenerTest();
        t.setLayout(new BorderLayout());

        MyMouseListener mouseListener = new MyMouseListener();
        JLabel l = new JLabel("JLabel");
        l.setPreferredSize(new Dimension(200, 100));
        JButton b = new JButton("JButton");
        b.setPreferredSize(new Dimension(200, 100));

        l.addMouseListener(mouseListener);
        b.addMouseListener(mouseListener);

        t.add(l, BorderLayout.CENTER);
        t.add(b, BorderLayout.SOUTH);

        t.pack();
        t.setVisible(true);
    }
}

class MyMouseListener implements MouseListener {

    @Override
    public void mouseClicked(MouseEvent e) {
        Object o = e.getSource();
        if (o instanceof JButton) {
            System.out.println("JButton");
        } else if (o instanceof JLabel) {
            System.out.println("JLabel");
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {/* TODO */
    }

    @Override
    public void mouseReleased(MouseEvent e) {/* TODO */
    }

    @Override
    public void mouseEntered(MouseEvent e) {/* TODO */
    }

    @Override
    public void mouseExited(MouseEvent e) {/* TODO */
    }
}

我不确定我是否理解这个问题,但您可以将JButton绘制为JLabel,但仍可以让ActionListener像按钮一样工作:

JButton button3 = new JButton("Label Button");
button3.setBorderPainted(false);
button3.setContentAreaFilled(false);
button3.addActionListener( ... );

侦听器是一种回调类型,它遵循以下命令:如果发生了什么事情,您会收到通知

对于许多不同类型的事件,有许多类型的侦听器。按钮有一个
ActionListener
,它至少由用户在按钮有焦点时单击或按enter或space触发

标签没有
ActionListener
,标签是用于所有预期用途的静态组件,但是标签有
MouseListener

MouseListener listener = ...;
JLabel label = new JLabel("This is a clickable lable");
label.addMouseListener(listener);
这将允许您监视鼠标单击标签的时间

看看:


欲了解更多详细信息,请在更高的层面(就最终用户交互而言)解释您想要实现的目标。目前还不清楚您的具体目标。it认为,如果您至少将变量名称(例如,使用谷歌翻译)翻译成英语,这将非常有用。我不确定,但听起来您想创建一个由actionPerformed()和鼠标侦听器调用的公共函数。na przyszlosc-Koduj w ANGIELSKIM nie POLSKIM。在这一天,我们发现了一种新的植物,它是一种多囊多囊多囊卵巢菌(otrzymania pomcy przy kodzie)。马吉内西;邮递公司由twoj kod robil,mniejwiecej chociaz
MouseListener listener = ...;
JLabel label = new JLabel("This is a clickable lable");
label.addMouseListener(listener);