我想问一个关于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的刷新或者在当前类获得此按钮的权限。
展开
展开全部
方法挺多的啊,随便说两个
你在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中的线程就是刷新一次。这个比较复杂一点,自己琢磨,很有好处~~
展开全部
回调接口 就当作一个连接器呗,你把主类的left 通过这个接口 传递到 你的面板类里不就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-25
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询