我想知道点击的组件的名称,因为我正在做这样的事情:
@Override
public void mouseClicked(MouseEvent clicked) {
if( clicked.getSource() instanceof JLabel )
System.out.println( clicked.getComponent().getName() );
}
但是返回“null”,请告诉我如何获取点击的组件名称?
答案 0 :(得分:2)
getName
默认返回null
,因此您需要明确设置它:
label.setName("MyLabel");
答案 1 :(得分:1)
作为
Reimeus
sais,组件的名称不会像其他编程语言中那样自动或隐式设置,必须首先明确设置名称。
您可以通过在构造时使用
指定名称来执行此操作(再次由Reimeus说)
label.setName("MyLabel");
其他方式是(例如,如果您在NetBeans设计模式下创建表单构建器)在您喜欢的GUI构造函数(Eclipse,NetBeans,IntelliJ ...)中分配名称属性。 / p>
如果您已经这样做了,那么当您为听众编程时,您可以使用 getSource()获取生成事件的对象,并将其转换为您已知的控件类型,在本例中为JLabel。 然后您可以使用 getName()。
它看起来像这样:
public void mousePressed(java.awt.event.MouseEvent evt)
{
javax.swing.JLabel senderName = (javax.swing.JLabel) evt.getSource();
switch(senderName.getName())
{
case "myLabel" : //DO what ever you want to do
...........
}
}
希望对你有所帮助。