意思就是说,我的登陆窗体在一个包中,主程序运行时显示主窗体界面,所有按钮都不可用只有登陆按钮可用,登陆成功后,让所有按钮都可进行编辑。如何在登陆按钮里添加事件,问题是登陆窗体和主界面在不同的包中。如何在登陆窗体的包中去调用主界面的组件。登陆窗体的包是主界面的子包。
高手说说具体应该怎么实现,如何去调用主界面的组件

解决方案 »

  1.   

    这是公共方法问题
    1.用接口.主界面和登陆界面同时使用接口
    2.在登陆界面中构造函数中传入主界面的对象..此时主界面已实例化,但没有setVisible
      

  2.   

    你先把你的文件放在同一个包中吧!
    呵呵!!
    在不同包中还没试过!明天试试吧!你在主窗体界面中new 一个登陆界面
    把主窗体的对象在登陆界面的构造函数中传过去。然后在登陆界面按钮中加入事件。呵呵~!我去做个例子试试啊!
    我不是高手,所以只有写出来用用呵呵~!
      

  3.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;public class ToTest extends JFrame{

    /**
     * Method main
     *
     *
     * @param args
     *
     */
     
     Container con;
     public JButton btnMain = new JButton("改变");
     JPanel pnlMain = new JPanel();
     
     
     //构造函数
     public ToTest(){
     
      con = this.getContentPane();
      btnMain.setEnabled(false);
      pnlMain.add(btnMain);
     
      con.add(pnlMain);
      this.setBounds(250,150,500,400);
      this.setVisible(true);
     
     
      //这个是用来把btnMain这个对象传过去。
      //这样就可以在另一个窗口调用了
      User ob =new User(this.btnMain);
     
     
     }
    public static void main(String[] args) {
    // TODO: 在这添加你的代码
    new ToTest();
    }
    }
    以上是一个ToTest的类用来生成一个不可用按钮的体
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;public class User extends JFrame{

    /**
     * Method main
     *
     *
     * @param args
     *
     */
     Container con;
     JButton btnMain = new JButton("是否改变");
     JPanel pnlMain = new JPanel();
     
     JButton btn;//定义的一个按钮
     
     
     //构造函数,在参数当中传入在ToTest中的对象
     public User(JButton btn){
      con = this.getContentPane();
     
      //给btn注册事件
      btnMain.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
      btnMain_change(e);
      }
      });
     
      //在这里加入控件
      btnMain.setEnabled(true);
      pnlMain.add(btnMain);
      con.add(pnlMain);
      this.btn= btn;  
      this.setBounds(150,150,350,350);
      this.setVisible(true);
     
     }
     public void btnMain_change(ActionEvent e){
      btn.setEnabled(true);//在这里发生改变
     }
    public static void main(String[] args) {
    // TODO: 在这添加你的代码

    }
    }在这个User类中点击一个按钮来控制ToTest类中的按钮变为可用
      

  4.   

    原理都在上面了。如果你非要在另一包上调用你写的类的话。你把你要调用的那个类先打包然后放JDK下面的ext这个包下面。这样你就可以用了!同学加油!^_^
      

  5.   

    谢谢楼上拉,其实在同一包中和不同包中构造方法传递组件和传参都是一样的,
    还有就是你定义的JButton是个全局的吧应该用不到this吧,直接new User(btnMain);
    这样写是否可以?