Java怎么得到对父组件的引用?

来源:百度知道 编辑:UC知道 时间:2024/06/16 21:58:13
比如现在有一个Frame,Frame里有个Panel01,Panel01里有个Panel02,Panel02里有个按钮,怎么实现点按钮让Frame隐藏?

更普遍一点就是怎么得到对父组件的引用,一般是用什么方法?
如果不知道套了多少层,能实现么?

//我来给你个小程序
//FrameTest.java
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FrameTest {
public static void main(String[] args) {
final Frame f= new Frame();
Button b = new Button("点出我就能关闭窗口了~");
Panel p1 = new Panel();
Panel p2=new Panel();
p1.add(p2);
p2.add(b);//add button to panel2
f.add(p1);//add panel to frame
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Button b = (Button)e.getSource();
Container p=b.getParent();
while(p!=null&&!p.equals(f)){//上溯直到Frame对象
p=p.getParent();
}
if(p!=null){
Frame frame = (Frame)p;//这里找到了窗口的引用
frame.dispose();
}
}
});
f.setSize(280,80);
f.setVisible(true);
}
}