2017-06-20 18 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

相關問題