2017-06-20 427 views
-1

有没有办法让我将切换按钮的状态作为参数/参数传递?我希望它能像这种情况下工作:JavaFX ToggleButton,如果它被点击为“状态”,有没有办法通过?

1)按下按钮。 2)按GO! 3)根据按下哪个按钮,它会通过,所以当我按GO时会有不同的结果!

谢谢!

+2

这是不是很清楚你在问什么。你不能只在“GO”按钮的事件处理程序中检查切换按钮的'selected'状态吗?或者如果切换按钮都在同一个切换组中,只需检查'toggleGroup.getSelectedToggle()'的值? –

回答

1

这里有一些代码供参考,如果它不是你想要的,请告诉我。

public class Foo extends Application{ 
    @Override 
    public void start(Stage primaryStage) throws IOException{ 
    ToggleGroup group = new ToggleGroup(); 

    ToggleButton tb1 = new ToggleButton("ToggleButton 1"); 
    ToggleButton tb2 = new ToggleButton("ToggleButton 2"); 
    ToggleButton tb3 = new ToggleButton("ToggleButton 3"); 

    tb1.setToggleGroup(group); 
    tb2.setToggleGroup(group); 
    tb3.setToggleGroup(group); 

    Button btn = new Button("GO"); 
    btn.setOnAction(new EventHandler<ActionEvent>(){ 
     @Override 
     public void handle(ActionEvent event){ 
     Toggle selectedTogger = group.getSelectedToggle(); 
     if(selectedTogger == tb1){ 
      //outcome 1 (ToggleButton1 selected) 

     }else if(selectedTogger == tb2){ 
      //outcome 2 (ToggleButton2 selected) 

     }else if(selectedTogger == tb3){ 
      //outcome 3 (ToggleButton3 selected) 

     }else{ 
      //outcome 4 (No ToggleButton selected) 

     } 
     } 
    }); 

    VBox vbox = new VBox(); 
    vbox.getChildren().addAll(tb1, tb2, tb3, btn); 

    primaryStage.setScene(new Scene(vbox)); 
    primaryStage.show(); 
    } 

    public static void main(String[] args){ 
    launch(args); 
    } 
} 
+0

谢谢,这是我正在寻找的答案。 “Toggle selectedTogger = group.getSelectedToggle();” 但是,无论何时将button.getSelectedToggle放入事件处理程序中,它都表示除非将其作为“最终”处理,否则我无法使用它。有什么具体原因吗? – stevek

+0

@stevek您应该编辑您的问题以清楚说明这是您被卡住的部分。否则,问题和答案对其他用户的使用非常有限。 –

+0

@stevek 不客气。 我很乐意帮助你。 我们必须在Java 7中使用“final”,但在Java 8中不是必需的。我的代码在Java 8下,所以我没有放入“final”。 这里是你想知道的答案链接 [为什么Java内部类需要“最终”外部实例变量](https://stackoverflow.com/questions/3910324/why-java-inner-classes-require-final-外实例变量) – yab

相关问题