目前我正在使用for循环用1-31
中的数字填充JPanel所以基本上,我想要做的就是如果我说点击数字1,它会显示
System.out.println(1);
以下是代码:
public class MonthPanel extends JPanel implements MouseListener {
public MonthPanel() {
setLayout(new GridLayout(6,7));
// Add headers
// Use for-each loop.
for (String header : headers) {
add(new JLabel(header));
}
for (int i = 1; i < 31; i++) {
add(new JLabel(String.valueOf(i)));
}
addMouseListener(this);
}
public void mouseClicked(MouseEvent e) {
// What should i do in here to get a specific JLabel?
}
}
}
这是图片
答案 0 :(得分:3)
这是解决方案
首先你必须在标签中添加mouselistener,它应该在括号中包含鼠标适配器,因为你只想使用鼠标点击方法。
在其中添加mouseClicked方法。
然后在mouseClicked方法中添加代码。
示例:
JLabel l = new JLabel("label");
l.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Your Code Here
}
});
add(l);
答案 1 :(得分:2)
而不是像你那样添加你可以做的事情
for (String header : headers) {
JLabel lbl = new JLabel(header);
lbl.addMouseListener(add ur listner);
add(lbl);
}
在mouseClicked事件中,您可以获取JLabel并按如下方式打印其文本
public void mouseClicked(MouseEvent e) {
System.out.println(((JLabel) e.getSource()).getText());
}
在代码中,如果实现MouseListener
接口,则必须覆盖其中的所有抽象方法。否则它将无法编译