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

代码如下:publicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubif(e.getAc... 代码如下: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的刷新或者在当前类获得此按钮的权限。 展开
 我来答
百度网友73d739a
2014-02-25
知道答主
回答量:19
采纳率:0%
帮助的人:16万
展开全部

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

  1. 你在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操作就可以了。

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

hitzsf
2014-02-25 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1157万
展开全部
回调接口 就当作一个连接器呗,你把主类的left 通过这个接口 传递到 你的面板类里不就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-25
展开全部
另一个类的实例传递进来才行呀

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

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

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

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


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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式