java如何指定“this”指的是什么?
我有一个JFrame,其中一个按钮必须将框架作为父项传递给它自己,我会使用this关键字,但它返回的是actionlistener,而不是JFrame。有解决办法吗?还是我写得不好
守则:
start.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
kMeans=new KMeans(mainWindow.table, Integer.parseInt(centroids.getText()),this);
}
});
# 1 楼答案
您应该使用
JFrameClassName.this
。因此,如果JFrame的名称为MainWindow,则代码为:# 2 楼答案
有一个变通办法。要在引用外部类时使用
this
关键字,可以使用ClassName.this
。例如:# 3 楼答案
因为这个代码:
实际上已经创建了一个新对象。 当您在这个
ActionListener
实现的方法中使用关键字this
时,它实际上使用了this
对象,这是一个ActionListener
如果在上述块之外使用
this
,它将引用JFrame实例如果您想在ActionListener中引用框架的
this
实例,您可以按照注释中提到的那样执行AFrame.this
。其中AFrame是frame类的名称,但不确定代码中的名称# 4 楼答案
使用ActionEvent中的getSource()方法访问事件发生的对象。 示例:
JMenuItem menuItem = (JMenuItem) e.getSource();
# 5 楼答案
您正试图将外部类的引用传递给匿名内部类。为此,您应该使用
OuterClassName.this
。请参见下面给出的示例