2014-10-23 5 views
0

У меня много HBoxes с некоторыми различными компонентами внутри (RadioButton, Labels, Buttons ...). RadioButtons находятся в ToggleGroup, поэтому можно выбрать только одну радиокнопку.Событие смены радио кнопки JavaFx

Я хочу добавить OnChange - Событие на кнопку Radio. Если RadioButton не будет выбран, должен быть Event-Trigger. Как добавить событие в Радио-кнопку?

На данный момент у меня есть такой код, но у него нет функции, которую я хочу иметь.

radio.setOnAction(new EventHandler<ActionEvent>() { 

     @Override 
     public void handle(ActionEvent arg0) { 
      if(!radio.isSelected()){ 
       ivTriangleImg.setRotate(iRotateCoord2); 
       btnTriangle.setGraphic(ivTriangleImg); 
      } 

      if(group!=null){ 
       group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() { 

        @Override 
        public void changed(
          ObservableValue<? extends Toggle> arg0, 
          Toggle arg1, Toggle arg2) { 

        } 
       }); 
      } 
     } 
    }); 

Я использую JavaFX 2.0 и Java 1.7, так что я не могу использовать лямбда-функции или специальные функции компонента из JavaFx8/Java 1.8

+0

** группа = Переключение группы ** Я хочу, чтобы получить информацию, когда Radio> Кнопка не выбран ... –

ответ

0
radio.setOnAction(new EventHandler<ActionEvent>() { 

     @Override 
     public void handle(ActionEvent arg0) { 
      if(!radio.isSelected()){ 
       ivTriangleImg.setRotate(iRotateCoord2); 
       btnTriangle.setGraphic(ivTriangleImg); 
      } 

      if(group!=null){ 
       group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() { 

        @Override 
        public void changed(
          ObservableValue<? extends Toggle> arg0, 
          Toggle arg1, Toggle arg2) { 

         if(!radio.isSelected()&&ivTriangleImg.getRotate()!=iRotateCoord1){ 
          ivTriangleImg.setRotate(iRotateCoord1); 
          btnTriangle.setGraphic(ivTriangleImg); 
         } 

        } 
       }); 
      } 
     } 
    }); 

это будет работать для моего вопроса. Я сделал небольшую ошибку, поэтому я не проверяю Radio-Style. Теперь он отлично работает ... Извините за этот вопрос.

Есть ли возможность проверить мероприятие у радио кнопки, а не на его группу?

5

Состояние элементов управления JavaFX представлено наблюдаемыми свойствами. Вы можете получить доступ к этим свойствам с control.propertyNameProperty() и add ChangeListeners им:

radioButton.selectedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> obs, Boolean wasPreviouslySelected, Boolean isNowSelected) { 
     if (isNowSelected) { 
      // ... 
     } else { 
      // ... 
     } 
    } 
});