Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多个JLabel鼠标侦听器_Java_Image_Swing_Jpanel_Jlabel - Fatal编程技术网

Java 多个JLabel鼠标侦听器

Java 多个JLabel鼠标侦听器,java,image,swing,jpanel,jlabel,Java,Image,Swing,Jpanel,Jlabel,我正在尝试使用循环向JPanel添加几个JLabel以及鼠标侦听器。这些JLabel将具有鼠标侦听器,以便在单击时更改其图标(使用label.setIcon())。但是,我一次只想选择一个。因此,我需要他们知道何时单击另一个标签,以便它知道在选择新标签之前关闭自己。然而,我的问题是,因为我用循环添加这些标签,所以它们都有相同的MouseStener 有谁能教我一个简单的方法来实现这一点吗?这是一个简短的示例,您可以如何实现它(请注意,我没有使用图标,而是更改了标签): 公共类MouseListe

我正在尝试使用循环向JPanel添加几个JLabel以及鼠标侦听器。这些JLabel将具有鼠标侦听器,以便在单击时更改其图标(使用label.setIcon())。但是,我一次只想选择一个。因此,我需要他们知道何时单击另一个标签,以便它知道在选择新标签之前关闭自己。然而,我的问题是,因为我用循环添加这些标签,所以它们都有相同的MouseStener


有谁能教我一个简单的方法来实现这一点吗?

这是一个简短的示例,您可以如何实现它(请注意,我没有使用图标,而是更改了标签):

公共类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
变量,但也可以在框架中有一个包含标签列表的字段。

到目前为止您做了什么?请发布一些代码。