2016-06-07 99 views
1

我一直在使用codenameone进行一年的开发,而且我从未遇到过这个问题,我觉得我正在失去理智。我刚刚重新设计了我正在工作的应用程序的一部分,现在ActionListener s没有开火。我将它们连接到Button,并在代码SpanButton动作监听器没有触发

 ActionListener goToDoc = new ActionListener() { 
      String mDocId = docId; 

      @Override 
      public void actionPerformed(ActionEvent evt) { 
       mStateMachine.currentExpertId = mDocId; 
       mStateMachine.showForm("DoctorDetails", null); 
      } 
     }; 
     name.addActionListener(goToDoc); 
     Util.downloadImageToStorage(mStateMachine.URL_PREFIX+"images/doctors/"+(String)value.get("doc_pic"), 
       "doc_post_pic_"+(String)value.get("doc_id")+".png", new Callback<Image>() { 
      @Override 
      public void onSucess(Image img) { 
       pic.setIcon(img.scaledWidth(mStateMachine.getProportionalWidth(.23))); 
       StateMachine.applyGreenBorder(pic); 
       pic.addActionListener(goToDoc); 
       pic.getParent().revalidate(); 
      } 

      @Override 
      public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { 
       System.out.println("Unable to download expert profile picture"); 
      } 
     }); 

当我调试代码,组件都表明ActionListener连接,但从未达到actionPerformed方法,无论多少次我点击按钮。我在模拟器和Android设备上遇到此问题。我还没有测试iPhone。

回答

0

点击事件未被触发的原因是因为组件未启用,可能是BUI Builder中的一个错误。在GUI生成器中勾选'Enabled'和'Focusable'复选框后,每次回到表单时都没有选中它们,我只是在代码中使用了component.setFocusable(true)component.setEnabled(true),并且在此之后它运行正常。

0

您是否将父级设置为首要组件或可调焦?

+0

不,父母是一个普通的BoxLayout Y容器。这个答案应该是一个评论,顺便说一句。 – ygesher

+0

我建议覆盖形式指针发布事件和调用超级检查聚焦组件。 –

+0

如何使用GUI构建器表单来做到这一点? – ygesher