在JPanels之间进行通信

时间:2012-03-18 16:03:44

标签: java swing jframe jpanel actionlistener

首先,我是Java的新手,所以请保持温和。

我有一个JFrame,它有两个'JPanel',其中一个是一个单独的类(我扩展了JPanel)。理想情况下,我想'调度和事件'或通知JFrame上的其他JPanel对象。

我在自定义JPanel类中有一个JButton数组,我想添加一个事件监听器。单击JButton后,我想在另一个JPanel上更改一些内容。

我真的不确定如何做到这一点,所以我将事件处理程序移动到JFrame类中,并尝试执行以下操作:

panel.buttonArray[i][j].addActionListener(this);

但是,这样做根本不起作用。令人讨厌的是,Eclipse也没有抱怨......

关于如何实现这一目标的任何提示?

这是非常可靠的解释,抱歉。

1 个答案:

答案 0 :(得分:2)

不考虑面板而是物体方面。作为一个对象,让我们说它有一个名称为object77,有一个对另一个对象的引用,称之为object42,object77可以调用object42上的方法。

  object77.methodInObject42();

  panel77.methodInPanel42();

至于事件处理程序,那么

   buttonOnPanelXX.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e) {
             panel77.methodInPanel42();
       }});

甚至更好......

    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(new Runnable(){
               public void run() {
                  panel77.methodInPanel42();
               }});
            }});