Java 多个JLabel鼠标侦听器
我正在尝试使用循环向JPanel添加几个JLabel以及鼠标侦听器。这些JLabel将具有鼠标侦听器,以便在单击时更改其图标(使用label.setIcon())。但是,我一次只想选择一个。因此,我需要他们知道何时单击另一个标签,以便它知道在选择新标签之前关闭自己。然而,我的问题是,因为我用循环添加这些标签,所以它们都有相同的MouseStenerJava 多个JLabel鼠标侦听器,java,image,swing,jpanel,jlabel,Java,Image,Swing,Jpanel,Jlabel,我正在尝试使用循环向JPanel添加几个JLabel以及鼠标侦听器。这些JLabel将具有鼠标侦听器,以便在单击时更改其图标(使用label.setIcon())。但是,我一次只想选择一个。因此,我需要他们知道何时单击另一个标签,以便它知道在选择新标签之前关闭自己。然而,我的问题是,因为我用循环添加这些标签,所以它们都有相同的MouseStener 有谁能教我一个简单的方法来实现这一点吗?这是一个简短的示例,您可以如何实现它(请注意,我没有使用图标,而是更改了标签): 公共类MouseListe
有谁能教我一个简单的方法来实现这一点吗?这是一个简短的示例,您可以如何实现它(请注意,我没有使用图标,而是更改了标签):
公共类MouseListenerExample扩展JFrame{
公共静态类MyMouseListener扩展了MouseAdapter{
私有静态最终集合标签=新ArrayList();
私有最终JFrame;
公共MyMouseListener(JFrame框架、JLabel标签){
this.frame=frame;
标签。添加(标签);
}
@凌驾
公共无效mouseClicked(MouseEvent e){
用于(JLabel标签:标签){
String text=label.getText();
if(文本开始,带(“X”)){
label.setText(text.substring(2));
}
}
JLabel currentLabel=(JLabel)e.getComponent();
currentLabel.setText(“X”+currentLabel.getText());
}
}
公共鼠标链接示例(){
超级(“MouseListener示例”);
容器c=getContentPane();
c、 setLayout(新的FlowLayout());
对于(int i=0;i<10;i++){
JLabel JLabel=新的JLabel(“标签”+i);
c、 添加(jLabel);
jLabel.addMouseListener(新的MyMouseListener(这个,jLabel));
}
包装();
setDefaultCloseOperation(关闭时退出);
setVisible(真);
}
公共静态void main(字符串[]args){
新的MouseListenerExample();
}
}
其主要思想是,为每个标签创建一个新的
MouseListener
,但将标签列表保留在每个侦听器的范围之外(在本例中,我只使用一个static
变量,但也可以在框架中有一个包含标签列表的字段。到目前为止您做了什么?请发布一些代码。