我想用JLabel替换JButton,我希望我的代码在单击JLabel时执行一些操作。
当我使用JButton时,我使用了动作监听器来处理按钮上的点击:
myButton.addActionListener(new clicksListener(arg1,this))
当我用myButton
替换myLabel
时,我在Eclipse中收到以下错误消息:
方法 addActionListener(ChipsListener)是 未定义类型JLabel
但我知道应该可以将单击处理程序附加到JLabel。有人知道怎么做吗?
答案 0 :(得分:26)
将MouseListener
添加到JLabel
。
由于JLabel
是Component
,您可以向其添加MouseListener
。使用该界面并在mouseClicked
上写下MouseListener
事件来处理点击。
答案 1 :(得分:11)
更简单的方法是使用JButton,因为它已经通过使用ActionListener支持此功能。
您可以使用以下命令使JButton看起来像JLabel:
button.setBorderPainted( false );
这种方法适用于想要处理mouseClick的情况,因为保证生成ActionEvent,而使用MouseListener时的mouseClicked事件可能不会在所有情况下生成,这会使用户感到困惑。
答案 2 :(得分:10)
/*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");
}
});
答案 3 :(得分:0)
好的。 JLabel具有允许您附加MouseListener对象的方法。 MouseListener对象需要一个MouseAdapter()对象。 MouseAdapter是一个抽象类,在理想情况下可充当Adapter,用于在运行中创建侦听器来执行操作。
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);
}
});