Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpanel之间的通信_Java_Swing_Jframe_Jpanel_Actionlistener - Fatal编程技术网

Java jpanel之间的通信

Java jpanel之间的通信,java,swing,jframe,jpanel,actionlistener,Java,Swing,Jframe,Jpanel,Actionlistener,首先,我是Java新手,所以请温柔一点 我有一个JFrame,它有两个“JPanel”,其中一个是单独的类(我扩展了JPanel)。理想情况下,我希望“dispatch and event”或通知JFrame上的另一个JPanel对象 我在自定义JPanel类中有一个JButtons数组,我想在其中添加一个事件侦听器。单击jb按钮后,我想在另一个JPanel上更改一些内容 我真的不知道如何做到这一点,所以我将事件处理程序移动到JFrame类中,并尝试执行以下操作: panel.buttonArr

首先,我是Java新手,所以请温柔一点

我有一个JFrame,它有两个“JPanel”,其中一个是单独的类(我扩展了JPanel)。理想情况下,我希望“dispatch and event”或通知JFrame上的另一个JPanel对象

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

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

panel.buttonArray[i][j].addActionListener(this);
然而,这样做根本不起作用。令人烦恼的是,Eclipse也没有抱怨

关于如何做到这一点,有什么建议吗


这是可怕的解释,对不起。

请不要从面板而是从对象的角度来考虑这一点。只要一个对象,比如说它的名字是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();
               }});
            }});

好的,我们给你的物品命名。你的JFrame=frame。您的自定义JPanel=mypanel。您的另一个JPanel=panel2。您到底想对panel2做什么?
扩展了JPanel
为什么,重写了哪些方法?您的类实现了
ActionsListener
?你实现了
actionPerformed
方法了吗?@andrewhompson它没有覆盖任何方法,我只是把它作为一种方法来把事情联系在一起。也就是说,我把它命名为Board,因为它是一个“棋盘”。如果代码编译,“Eclipse”不会“抱怨”。仅仅因为它可以编译并不意味着它会正常运行(直到你的bug被修复),所以最好不要对此感到恼火,否则你会非常恼火。正如查克·弗里卡诺所解释的那样,你可能对推荐信有问题。另外,考虑使用observer设计模式,以便一个对象在发生更改时收到另一个对象中更改的通知。所有Swing侦听器都基于此。我真的不确定如何实现此功能。子对象如何在其父对象的子对象中调用方法?(我想是这样的)也许我应该画一张图表,哈哈。编辑:结果并不像预期的那样。这就是我的意思,按钮在panel1中被取消,需要修改panel2@Jonathan-让jframe调用panel1方法并传递panel2。(小组1.识别(小组2);)我算出了,谢谢!:)用了一种稍微不同的方式,但你给了我正确的指示(哈!)。必须了解java中没有指针