【发布时间】:2016-03-31 11:30:58
【问题描述】:
我有这个:label = new JLabel[9][9]。我想为标签设置一个新图标(对于我点击的标签,当然)。我也有一个面板(带有网格布局),其中有标签,它是 500x500。
所以在mouselistener 中,我知道,我可以使用getX() 和getY()。在那之后,我怎么能说我点击了哪一行和哪一列?我应该将面板分成小区域吗?我希望这个问题是可以理解的。我在这里阅读了类似这样的问题,但我并没有真正找到答案......
到目前为止,我写的是:
public void mouseClicked(MouseEvent e){
int mouseX = e.getX();
int mouseY = e.getY();
int i = 0;
int j = 0;
URL url = Click.class.getResource("image.png");
ImageIcon img = new ImageIcon(url);
label[i][j] = new JLabel(img);
}
【问题讨论】:
-
"I've got this: label.." 此时我会使用未修饰的
JButton或JToggleButton.. "@987654324 @" .因为按钮具有在悬停、聚焦、按下等时在图像之间切换的内置方法。不需要任何特定的侦听器。 -
"..怎么说我点击了哪一行哪一列?" 如果每个标签都添加了监听器,可以
e.getSource()知道是哪一个是事件的来源.. -
谢谢。你能给我举个 getSource() 的例子吗,我该怎么用呢?
-
我同意 Andrew 的观点:不要试图通过使用布局计算标签应该的位置来确定鼠标应该在哪个标签上只是为每个组件(即标签)提供侦听器,并让 UI 框架为您完成工作。
-
事件源是你点击的组件。只需检查它是否是标签,在源上投射并设置新图标。
标签: java swing labels mouselistener