2014-12-15 2 views
0

У меня есть кнопка переключения, которую мне нужно «щелкнуть», когда я дважды щелкнул другой узел. Я знаю, что событие, которое у меня установлено, работает: когда я дважды щелкнул элемент управления, событие, которое у меня есть, должно быть «нажатием» кнопки переключения, но то, что у меня есть, не работает:Как отправить клик на кнопку переключения JavaFX?

(ActionEvent E) -> { 
    Launcher.this.ButtonsForm.btnOptions.setSelected(
     !Launcher.this.ButtonsForm.btnOptions.isSelected() 
    ); Launcher.this.ButtonsForm.btnOptions.fire(
    ); E.consume(); 
} 

Кнопка переключения имеет обработчик события, связанный с его onAction, который должен показывать форму, когда кнопка переключается, а затем, когда форма закрыта, кнопка возвращается в свое невыделенное состояние.

Каков надлежащий способ выполнения этого?

+2

Я не проверял это, но это выглядит, как вы первый листать выбранное состояние тумблера, а затем стреляя событие действия на нем (который также будет переворачивать выбранное состояние). Вам, вероятно, нужно просто сделать одно или другое. –

ответ

0

Я испытываю ToggleButton с этим:

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.ToggleButton; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 


public class NewFXMain extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     ToggleButton btn = new ToggleButton(); 
     btn.setText("Say 'Hello World'"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       System.out.println("Hello World!"); 
      } 
     }); 

     Button btt=new Button(); 
     btt.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       // btn.setSelected(true); 
       // btn.arm(); 
       btn.fire(); 
       // btn.setSelected(true); 
       event.consume(); 
      } 
     }); 


     VBox root = new VBox(); 
     root.getChildren().add(btn); 
     root.getChildren().add(btt); 
     Scene scene = new Scene(root, 300, 250); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

После этого испытания в соответствии с @James_D вы можете использовать только функцию огня() в конце концов, с рукой(), если не вооружен.

(ActionEvent E) -> { 
Launcher.this.ButtonsForm.btnOptions.fire(); 
E.consume(); 
} 

Я надеюсь, что помог вам

Смежные вопросы