如何将 mouseListener 添加到匿名 JLabel 对象?
How do i add a mouseListener to a anonymous JLabel object?
目前我正在使用 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?
}
}
}
这是图片
你可以做类似
的事情而不是那样添加
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
接口,您必须覆盖其中的所有抽象方法。否则无法编译
这是解决方案
首先你必须在标签中添加 mouselistener,它的括号中应该有鼠标适配器,因为你只想使用鼠标点击方法。
比在其中添加 mouseClicked 方法。
然后在 mouseClicked 方法中添加代码。
示例:
JLabel l = new JLabel("label");
l.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Your Code Here
}
});
add(l);
目前我正在使用 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?
}
}
}
这是图片
你可以做类似
的事情而不是那样添加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
接口,您必须覆盖其中的所有抽象方法。否则无法编译
这是解决方案
首先你必须在标签中添加 mouselistener,它的括号中应该有鼠标适配器,因为你只想使用鼠标点击方法。
比在其中添加 mouseClicked 方法。
然后在 mouseClicked 方法中添加代码。
示例:
JLabel l = new JLabel("label");
l.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Your Code Here
}
});
add(l);