I un lavoro su JavaFX 8 e SceneBuilder
. Ho creato alcuni pulsanti di opzione nel file FXML e specificato un nome toggleGroup
in un elenco di pulsanti di opzione. Quindi, ora voglio ottenere il pulsante di opzione selezionato di toggleGroup
nel mio controller, devo fare di nuovo tutti i pulsanti di opzione come campi nel controller, o solo l'oggetto toggleGroup
mi otterrà il pulsante di opzione selezionato (il testo di solo quel pulsante di opzione, non l'oggetto pulsante).Come ottenere il pulsante di opzione selezionato da ToggleGroup
risposta
Supponiamo di avere un gruppo di commutazione e tre pulsanti di opzione appartenenti a quel gruppo.
ToggleGroup group = new ToggleGroup();
RadioButton rb1 = new RadioButton("RadioButton1");
rb1.setUserData("RadioButton1");
rb1.setToggleGroup(group);
rb1.setSelected(true);
RadioButton rb2 = new RadioButton("RadioButton2");
rb2.setUserData("RadioButton2");
rb2.setToggleGroup(group);
RadioButton rb3 = new RadioButton("RadioButton3");
rb3.setUserData("RadioButton3");
rb3.setToggleGroup(group);
Quando si seleziona un pulsante di scelta da quel gruppo a ginocchiera, il changed(...)
seguente metodo sarà chiamato.
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) {
if (group.getSelectedToggle() != null) {
System.out.println(group.getSelectedToggle().getUserData().toString());
// Do something here with the userData of newly selected radioButton
}
}
});
Questo non è mai stato adeguatamente o accuratamente risposto, così ho pensato di postare la soluzione che ho ricevuto.
Quando si creano pulsanti di opzione in SceneBuilder
, quindi utilizzare anche SceneBuilder
per assegnarli a un gruppo. Il modo in cui si accede a quel gruppo tramite il Controller consiste nel creare innanzitutto una variabile di tipo ToggleGroup
nel Controller e denominarlo esattamente con lo stesso nome di quello creato in SceneBuilder
. Quindi puoi usarlo. Ecco un esempio di pseudocodice come ho fatto:
// your imports
public class Controller
{
@FXML ToggleGroup myGroup; //I called it myGroup in SceneBuilder as well.
public void myGroupAction(ActionEvent action)
{
System.out.println("Toggled: " + myGroup.getSelectedToggle().getUserData().toString());
}
public void initialize()
{
//whatever initialize code you have here
}
}
Anche se il testo restituito dalla proprietà getUserData
è lungo. Ecco un modo per ottenere solo il nome del pulsante di scelta:
myGroup.selectedToggleProperty().addListener(new ChangeListener<Toggle>()
{
@Override
public void changed(ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1)
{
RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
System.out.println("Selected Radio Button - "+chk.getText());
}
});
Spero che questo aiuti qualcuno lungo la strada ...
@FXML
ToggleGroup right; //I called it right in SceneBuilder.
poi da qualche parte nel metodo.
RadioButton selectedRadioButton = (RadioButton) right.getSelectedToggle();
String toogleGroupValue = selectedRadioButton.getText();
Semplice e veloce! – marw
- 1. come posso ottenere il valore selezionato del pulsante di opzione?
- 2. Evento per il pulsante di opzione selezionato?
- 3. Ottenere il valore da un pulsante di opzione utilizzando javascript
- 4. Android ottiene il valore del pulsante di opzione selezionato
- 5. JQuery: come ottenere il valore del pulsante di scelta selezionato?
- 6. impostato il pulsante di opzione php selezionato per impostazione predefinita
- 7. Come sapere quale pulsante di opzione è selezionato in jQuery?
- 8. Ottiene il pulsante di opzione selezionato in un gruppo (WPF)
- 9. Come ottenere il valore del pulsante di opzione selezionato in angularjs
- 10. Assegnare un valore iniziale al pulsante di opzione come selezionato
- 11. ottenere il valore selezionato del pulsante di opzione in caso di azione
- 12. Ottieni l'indice del pulsante di opzione selezionato nel gruppo
- 13. Quale pulsante di opzione è selezionato in un TRadioGroup?
- 14. Come ottenere il numero selezionato da NumberPicker?
- 15. È selezionato un solo pulsante di opzione alla volta
- 16. (extjs) Ottieni il valore selezionato del pulsante di opzione nel modulo. Non si restituisce il valore
- 17. Come rendere il pulsante di opzione selezionato per impostazione predefinita in base al ruolo utente diverso?
- 18. Come deselezionare la casella di controllo a meno che non sia selezionato il pulsante di opzione?
- 19. Pulsante radio selezionato?
- 20. Come ottenere il testo selezionato da edittext in Android?
- 21. jQuery $ .removeAttr ("selezionato") opzione
- 22. Come verificare se il pulsante di opzione è selezionato o meno in Selenium WebDriver?
- 23. Come verificare che il pulsante di opzione sia selezionato usando JQuery?
- 24. Come posso ottenere il valore del pulsante di opzione selezionato quando si invia un modulo utilizzando angularjs?
- 25. Solo selezionare un solo pulsante di opzione da listview
- 26. Come ottenere l'ID opzione selezionata?
- 27. Suoneria picker - pulsante di opzione impostato
- 28. Verifica di un pulsante di opzione con jQuery quando il pulsante di opzione è runat = "server"?
- 29. Aggiungi l'attributo 'selezionato' utilizzando il valore opzione
- 30. campo di input disabilitato fino a quando il pulsante di opzione è selezionato (HTML)
Stavo chiedendo se sono reqd. per rendere nuovamente i 3 RadioButton nel controller (dopo averli fatti in FXML), oppure posso creare solo l'oggetto ToggleGroup e accedere in qualche modo al pulsante selezionato. –
@Rounaq_intel, prova ad aggiungere il togglegroup al controller e ad aggiungere il listener nella risposta sopra. –
Grazie, proprio quello che stavo cercando. – Kefirchiks