黑马程序员技术交流社区

标题: GUI中两个类中重复方法调用问题 [打印本页]

作者: 李知伦    时间: 2012-8-14 23:10
标题: GUI中两个类中重复方法调用问题
本帖最后由 李知伦 于 2012-8-14 23:43 编辑
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. public class TestDialog extends Frame//继承了Frame
  4. {  
  5.     TestDialog()
  6.     {               
  7.         Button b=new Button("open a dialog");      
  8.         add(b,"Center");
  9.         b.addActionListener(new ActionListener(){
  10.         public void actionPerformed(ActionEvent e)
  11.         {
  12.             //传入owner参数时要用TestDialog.this来调用主方法中的对象,而不能是this或者new
  13.             MyDialog dlg = new MyDialog(TestDialog.this, "Dialog");            
  14.             dlg.setVisible(true);         
  15.         }
  16.         });  
  17.     setBounds(0,0,400,200);
  18.     setVisible(true);
  19.     addWindowListener(new WindowAdapter(){
  20.         public void windowClosing(WindowEvent e)
  21.         {
  22.             System.exit(0);
  23.         }
  24.         });
  25.     }
  26.     public void setInfo()
  27.     {
  28.         System.out.println("TestDialog");
  29.     }
  30.     public static void main(String[] args)
  31.     {
  32.        new TestDialog();
  33.     }
  34. }

  35. class MyDialog extends Dialog
  36. {
  37.     private String strInfo = null;
  38.     public MyDialog(Frame owner,String title) {        
  39.         super(owner,title);
  40.         setBounds(0,0,200,150);
  41.         Button b1=new Button("ok");
  42.         this.add(b1,"Center");            
  43.         b1.addActionListener(new ActionListener(){
  44.                 public void actionPerformed(ActionEvent e)
  45.                 {                                
  46.                     //这里调用Test类对象时要用MyDialog.this.getOwner()或者getOwner()
  47.                     ((TestDialog)MyDialog.this.getOwner()).setInfo();
  48.                     
  49.                 }
  50.                 });            
  51.     }
  52.     public void setInfo()
  53.     {   
  54.         System.out.println("Dialog");
  55.     }   
  56. }
复制代码
那么如果Test不继承Frame类,而是创建一个Frame对象f来装按钮b
那么MyDialog中b1的监听器中 要调用Test的setInfo方法时,是否可行,如果可行应该怎么写


作者: 李知伦    时间: 2012-8-22 15:29
顶下贴~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2