gpt4 book ai didi

java - 无法将不同的鼠标事件监听器添加到不同的面板

转载 作者:行者123 更新时间:2023-12-04 04:45:54 25 4
gpt4 key购买 nike

简介:

我试图在网格 View 中显示文件夹中的所有文件,当单击文件时,我应该在命令行上打印出该名称。

我有所有文件的 jpanel,所以我试图检测对 jpanel 的点击并在循环中为该面板分配操作。

我的问题,

使用 for 循环时,我有变量“name”,它保留文件名,我正在尝试像这样添加鼠标监听器,

panel[i].addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
System.out.println("MOUSE_RELEASED_EVENT:for "+name);
}
});

如您所见,我正在迭代 i ,因此将鼠标监听器添加到所有面板,但问题是在鼠标监听器中使用了变量名称本身。

示例

如果上面写的不是解释的方式, 我的意思是说我有两个文件,A 和 B。

我要找的是,鼠标监听器首先是,
System.out.println("MOUSE_RELEASED_EVENT:for A"); //Since name="A" here.

对于第二个文件,
System.out.println("MOUSE_RELEASED_EVENT:for B");  //Since name="B" here.

但是它不会以这种方式发生,变量名称本身附加到鼠标监听器,并且我始终得到的是名称的最终值,在我的示例中始终为“B”。因为它是循环中 name 的最后一个值。

我该如何解决这个问题?

另外,有人可以告诉我是否可以在子面板的 BorderLayout 中修复大小,无论我使用什么,它们都会调整大小, setSize, setPreferredSize, setMaximumSize, setMinimumSize.
感谢您的时间和努力。

最佳答案

您可以使用 JPanelsetName()/getName()在那里存储变量的方法。

然后在监听器中使用 ((JPanel)event.getSource()).getName();

关于java - 无法将不同的鼠标事件监听器添加到不同的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com