比如:public class thispanel extends Panel{......    void ff()
    {
        这里想取得是谁是thispanel类实例tp的调用者,即在这里如何取到    topclass类的运行实例tc,应该如何写代码呢?
    }
}
public class topclass extends Frame{.......
topclass(){
thispanel tp=new thispanel();add(tp);
} public static void Main(String[] args)
{
    topclass tc=new tcpclass();
}}

解决方案 »

  1.   

    自己在public class thispanel extends Panel{......    void ff()
        {
            这里想取得是谁是thispanel类实例tp的调用者,即在这里如何取到    topclass类的运行实例tc,应该如何写代码呢?
        }

    这里面写个field
    private Frame parent;
    构造方法要求创建这个类的对象是进行初始化
      

  2.   

    同意2楼的,记得原来MFC编程的时候,子空间的参数列表第一位一般都是某某*parent,指向父窗口的指针
    通过这种方式来使得子控件的操作可以通知或者说“影响”到父控件这种思想后来我在Swing编程中也常常借鉴,就像2楼说的,增加一个priavte Frame parent属性在构造函数或者init方法中初始化,对父类的其他方法封装控制号一些,不要都是public,这样就比较合理了!
      

  3.   

     sun.reflect.Reflection.getCallerClass(x);
    x从1到n,1是自己,2是调它者,3是调用者的调用者,一直向上.
      

  4.   

    各位老师,还是没有理解到你们说的意思,请就在下的想法,给个实际的代码写法,好吗???
    因为,我在做程序的时候,这个thispanel类将放入某个使用者类去实例化,并不能确定!换句话说:thispanel.java编译后,将放到另一个不固定的**.java中去做实例化
    请指教,谢谢
      

  5.   

    自己写了一个日历控件
    public class selfCalendar extends javax.swing.JPanel {
    ......
    }然后在netBeans中,将这个控制添加到swing组件面板中去,可以拖放动需要使用的任意一个JFrame,JPanel中此时,如果在任意一个JFrame,JPanel中放入一个JTextField
    然后,需要在selfCalendar的实例中,将选定的日期比如:2008-09-12返回给JFrame或JPanel中的这个JTextField
    此时,是不是就需要用到了解调用者
    请指教,在不确定一个调用者实例名称的情况下,如何将日历选定的日期回写给调用者窗体的JTextField
      

  6.   

    为什么要知道tp的拥有者?   二楼的做法也许能够解决你的问题! 
    我觉得 这种做法在基于现实的建模上面确实也是可行的! 
    可是在设计上面确实危险的!......  因为这样会形成交叉引用!...... 交叉引用可能会导致的一个明显的问题就是 outofmemory
      

  7.   

    请问axman,你说的是在那个日历控制的选定日期这个方法中吗?
      

  8.   

    void ff() 

    这里想取得是谁是thispanel类实例tp的调用者,即在这里如何取到 topclass类的运行实例tc,应该如何写代码呢? 

    在这个方法里,throw一个exception,分析stack trace就可以了。
      

  9.   

    请帮忙指点一下:
    我的自定义日历的结构
    下边的这个rl类,我把他增加到netbeans 的swing组件面板中,可以通过拖放,来放入任意的一个JFrame,或是JPanel中
    public class rl extends JPanel{
           JTable jt=new JTable();//以表格为基体来显示日历的每个月份的天数
           jt.addMouseListener(new MouseListener(){
            public void mouseClicked(MouseEvent e) {  
                    String aaa=(String)jt.getValueAt(jt.getSelectedRow(),jt.getSelectedColumn());
                    if(e.getClickCount()==2 && aaa!=null)
                    {
                        //在这里,当mouse双击这个表格的时候,如果表格中的单元格不为空,即有具体日期,即想将值返回到这个rl类实例的调用者窗体的某个JTextField中去
                        //而空上拖入它的上一级窗体,并不确定的情况下,应该如何实现呢?
                        
                    }
                    
                }            public void mousePressed(MouseEvent e) {
                }            public void mouseReleased(MouseEvent e) {
                }            public void mouseEntered(MouseEvent e) {
                }            public void mouseExited(MouseEvent e) {
                }
                
            });
    }
      

  10.   

    我感觉只能里边保留一个外部容器的引用,然后通过引用更新其text