Java 我可以向JLabel添加操作侦听器吗?
我想用JLabel替换JButton,我想让我的代码在单击JLabel时执行一些操作 当我使用JButton时,我使用action listener处理对按钮的单击:Java 我可以向JLabel添加操作侦听器吗?,java,swing,Java,Swing,我想用JLabel替换JButton,我想让我的代码在单击JLabel时执行一些操作 当我使用JButton时,我使用action listener处理对按钮的单击: myButton.addActionListener(new clicksListener(arg1,this)) 当我将myButton替换为myLabel时,我在Eclipse中收到以下错误消息: 方法 addActionListener(ChipsListener)是 类型JLabel未定义 但我知道应该可以将单击处理程序
myButton.addActionListener(new clicksListener(arg1,this))
当我将myButton
替换为myLabel
时,我在Eclipse中收到以下错误消息:
方法
addActionListener(ChipsListener)是
类型JLabel未定义
但我知道应该可以将单击处理程序附加到JLabel。有人知道怎么做吗?在
JLabel
中添加一个MouseListener
由于
JLabel
是一个组件
,因此可以向其添加MouseListener
s。使用该界面并在MouseListener
上编写mouseClicked
事件来处理单击。更简单的方法是只使用JButton,因为它已经通过使用ActionListener支持此功能
您可以使用以下命令使JButton看起来像JLabel:
button.setBorderPainted( false );
此方法适用于您想要处理鼠标单击的情况,因为保证会生成ActionEvent,而使用鼠标侦听器时可能不会在所有情况下生成as mouseClicked事件,这可能会让用户感到困惑。当然。jLabel有一个方法,允许您附加MouseListener对象。MouseListener对象需要一个MouseAdapter()对象。MouseAdapter是一个抽象类,理想情况下,它可以作为一个适配器,用于创建动态监听器来完成任务
/*add a mouselistener instead and listen to mouse clicks*/
jlable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Yay you clicked me");
}
});
JLabel lb = new JLabel(An image icon, if you'd like.);
//now lets attach a listener to your JLabel
lb.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
//THIS CODE WILL RUN WHEN THE EVENT OF CLICKING IS RECEIVED.
//example of something you could do below.
new Random().ints().limit(60).forEach(System.out::println);
}
});
恐怕更复杂,看看在什么情况下不会生成mouseClicked事件?@Buffalo,mousePressed和mouseerelease事件在同一点生成时,会生成mouseClicked事件。因此,如果用户在这两个事件之间移动鼠标一个像素,你就不会被鼠标点击。谢谢你的回复!这不是过多应用程序的默认实现吗?此外,如果你真的想克服这个问题,你可以在MouseListener的mousePressed实现中施展你的魔法。你是说所有的
组件
都可以添加鼠标侦听器
(任何参考)?什么样的小部件可以添加ActionListener
?是的,addMouseListener()
方法是在组件上定义的。此类,当鼠标进入或退出组件时,或当按钮在组件内按下或在组件内按下后释放时,生成MouseEvent
对象。扩展组件
的任何类都可以有任意数量的鼠标侦听器
引用来侦听这些事件addActionListener()
在AbstractButton
上定义,并在按下按钮时生成ActionEvent
对象。由于JLabel
不扩展AbstractButton
,因此它不会生成ActionEvent
对象。尝试JButton
。总是尝试提供一些解释,而不仅仅是发布代码。同时,这对你来说显然是微不足道的,对其他人来说可能很难理解。