我想问一个关于Java的问题:就是我在一个类中点击按钮刷新另一个类的JPanel

代码如下:public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand().equalsIgnoreCase("父子关系")||e.getActionCommand().equalsIgnoreCase("配偶关系")||e.getActionCommand().equalsIgnoreCase("创建家族")){ ExecutorService exec = Executors.newCachedThreadPool(); AddListener listener = new AddListener(family.left,e.getActionCommand(),tree) ; Futurefuture = exec.submit(listener); try { left.removeAll(); left = future.get(); } catch (InterruptedException | ExecutionException e1) { e1.printStackTrace(); } //马上刷新 ui.validate(); }我通过点击使用callback进行回调,得到一个JPanel,并显示在此类中,但这个JPanel是在另一个类中写的,这个面板中有一个按钮,我怎么才能监听这个按钮来实现当前类的JPanel的刷新或者在当前类获得此按钮的权限。

方法挺多的啊,随便说两个

    你在left中启动person,启动的时候把left自己作为参数传递过去。例如person的构造器加上一个left类型的参数,然后在left中启动person的时候:new person(this),这样就把left自己传递过去了。在person的按钮动作函数中,直接操作left对象即可。

    person的代码如下:

    left l;

    public person(left l)

    {

    this.l = l

    }

    left的代码如下:

    startPerson()

    {

    new person(this)

    }

    然后在person中对l操作就可以了。

    使用同步机制,在left中设置一个静态的公开的pv锁,有一个线程在这个锁上进行left的刷新。在person中,点击一次按钮就把锁解开,然后left中的线程就是刷新一次。这个比较复杂一点,自己琢磨,很有好处~~

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-25
回调接口 就当作一个连接器呗,你把主类的left 通过这个接口 传递到 你的面板类里不就行了
第2个回答  2014-02-25
另一个类的实例传递进来才行呀

在另一个类里面定义一个方法,直接调用,就更新了追问

我本来已经把面板传回来了......

我写了三个类,一个是主类,一个是回调接口,一个是面板类

我在主类中使用回调得到面板JPanel left


这个person类是我写的一个JPanel类,我在这个类中写了一个按钮,但是我想通过这个按钮的点击来实现主类面板的刷新,或者我怎么才能在主类获得已传回的面板中的按钮的权限

相似回答