2012-05-20 49 views
4

我有一個類,其中包含內部類。 我想發送值,它等於頂級,但「this」發送的是內部類的值。我能做什麼?這對內部類行爲

package Controller; 
public class MessageFrameListener{ 
private MessageFrame mf; 
private User us; 
private Contact cn; 
private Timer timer; 
private Running run; 
private ListFrame lf; 

public MessageFrameListener(ListFrame l_f, MessageFrame m_f, User u_s, Contact c_n, Running r_n){ 
    run = r_n; 
    mf = m_f; 
    us = u_s; 
    cn = c_n; 
    lf = l_f; 
    m_f.addButtonListener(new SButtonListener()); 
    m_f.addWinListener(new FrameListener()); 

    timer = new Timer(500,new timerListener()); 
    timer.start(); 
} 


public class FrameListener implements WindowListener{ 

    @Override 
    public void windowClosing(WindowEvent e) { 
     timer.stop(); 
     timer = null; 
     mf.close(); 
     lf.removeMFL(this)); 
    }  
} 
} 

所以,這條線

 lf.removeMFL(this)); 

這個發送 「FrameListener的」,但我想送 「MessageFrameListener」

+0

請修正你的代碼的縮進。 –

+0

http://stackoverflow.com/q/2731719/1140748 –

回答

8

使用qualified this

MessageFrameListener.this 
+2

+1鏈接到JLS。 –

+0

同上。刪除我的答案贊成這一個。 –

+0

似乎工作,謝謝 –

1

用途:

 
    lf.removeMFL(MessageFrameListener.this); 
1

在內部類本身,你可以使用

MessageFrameListener.this; 

您還可以添加一個方法外部類

public MessageFrameListener getInstance() { 
    return this; 
} 
相關問題