2017-05-01 1 views
1

Comment puis-je définir l'action d'un bouton dans la même méthode Je crée les boutons?définir le bouton sur l'action dans la méthode java

Ma méthode souhaitée serait quelque chose comme ceci:

private void buttonsCreation() { 
     //----------------creation of interactive buttons with text----------------- 
     Button buttonForLoad = new Button("Load footage file"); 
     Button buttonForSave = new Button("Save footage file"); 
     Button buttonForSaveAs = new Button("Save as footage file"); 
     ButtonbuttonForRun = new Button("Run footage animation"); 
     Button buttonForTerminate = new Button("Stop footage animation"); 
     Button buttonForEditMenu = new Button("Edit current footage"); 
     //---------------setting the interaction of the buttons--------------------- 
     buttonForLoad.setOnAction(loadFootage()); 
     buttonForSave.setOnAction(saveFootage()); 
     buttonForSaveAs.setOnAction(saveAs()); 
     buttonForRun.setOnAction(runAnimation()); 
     buttonForTerminate.setOnAction(terminateAnimatino()); 
     buttonForEditMenu.setOnAction(editMenu()); 
    } 

Je voudrais que les attributs de setOnAction appeler ces méthodes, mais je reçois cette erreur. setOnAction dans ButonBase ne peut pas être appliqué à void. Je suis conscient que je peux créer un handle vide avec un ActionEvent en tant que paramètre et le faire fonctionner, mais ma fonction désirée sera dans une fonction, et si possible avec autant de lignes de code que possible.

Merci beaucoup

Répondre

0

Peut-être vouliez-vous dire à l'auditeur d'action par exemple:

private void buttonsCreation() { 
//------------creation of interactive buttons with text--------------- 

Button buttonForLoad = new Button("Load footage file"); 
buttonForLoad.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       // to do something 
      } 
     }); 

... 
} 
+0

La question est étiquetée JavaFX, donc c'est probablement un bouton JavaFX, pas un bouton AWT. –

1

Pour appeler la fonction vide dans le gestionnaire d'action, l'expression lambda est utile. Comme ceci:

buttonForLoad.setOnAction(e -> loadFootage()); 
buttonForSave.setOnAction(e -> saveFootage()); 
...