2014-12-05 2 views
-3

나는 버튼을 가지고 있으며, 거기에 onActionProperty를 추가하고 싶습니다. 모든 액션 - 이벤트에서 뭔가를 만들고 싶습니다.버튼 동작 속성 -> 변경 수신기 추가

어떻게 단추에 추가 할 수 있습니까?

내 예 :

m_popupSwitch.onActionProperty().addListener(new ChangeListener<EventHandler<ActionEvent>>() 
     { 
      @Override 
      public void changed(ObservableValue<? extends EventHandler<ActionEvent>> arg0, EventHandler<ActionEvent> arg1, EventHandler<ActionEvent> arg2) 
      { 
       System.out.println("OUTPUT "); 
      } 
     }); 

내 예에서처럼 추가 할 수 있지만 작동하지 않는, 그래서 난 이벤트를 때마다 onActionProperty 변화를 얻을 어떻게 내가, 내 코드를 수정할 수 있습니다 ..

주 - 문제는 ToggleGroup에 그룹 인 ToggleButton이 있다는 것입니다. 이제는이 지역의 모든 이벤트를 해당 액션 속성에서 가져오고 싶습니다. 네가 나를 도울 수 있기를 바랍니다.

+0

정말 질문하지 않습니다. 'Button'은'onActionProperty' API를 가지고 있지 않습니까? – GGrec

+0

@GGrec 질문에 새로운 내용을 추가하십시오. –

+0

'm_popupSwitch.setOnAction (...) '을 통해 버튼으로 등록 된 리스너가 변경되면 코드가 실행됩니다 (예 :'m_popupSwitch'를 호출 할 때마다 리스너가 호출됩니다. setOnAction (...);'). 나는 그것이 당신이 원하는 것이라고 생각하지 않습니다. 질문을 편집하여 (예 : "ToggleGroup to ToggleGroup"이 전혀 이해가 안되네요.) –

답변

1

당신의 선택 및 토글 버튼 시도의 선택을 취소 uppon 역할을 할 경우 :

ToggleButton first = new ToggleButton("A"); 
    ToggleButton second = new ToggleButton("B"); 
    ToggleGroup group = new ToggleGroup(); 
    first.setToggleGroup(group); 
    second.setToggleGroup(group); 
    second.selectedProperty().addListener((p, ov, nv) -> { 
     System.out.println("Changed"); 
    }); 

목록 기의 차이는 사용하여 표시 할 수 있습니다 :

ToggleButton first = new ToggleButton("A"); 
    ToggleButton second = new ToggleButton("B"); 
    ToggleGroup group = new ToggleGroup(); 
    first.setToggleGroup(group); 
    second.setToggleGroup(group); 
    second.selectedProperty().addListener((p, o, n) -> { 
     System.out.println("Changed "+p.getValue()); 
    }); 
    second.setOnAction(a -> { 
     System.out.println("Action"); 
    }); 
    second.onActionProperty().addListener((p, o, n) ->{ 
     System.out.println("OnAction"); 

    }); 

B (초) 클릭이 인쇄되는 위치 :

Changed true 
    Action 

그리고 A의 후속 클릭 (첫번째)이 인쇄됩니다 : 그래서

Changed false 

:

누군가가이 버튼을
  • selectedProperty 클릭하면의 OnAction() 리스너 (setOnAction이)라고
    1. () 청취자는 토글 상태 'selected'가 바뀌거나이 토글 그룹의 다른 버튼을 클릭하여 선택 해제 된 경우에 호출됩니다.
    2. onActionProperty() 리스너는 다음을 사용하여 새 수신기를 제거하거나 추가하는 경우에만 호출됩니다. setOnAction() 메소드
  • 0

    당신이 찾고있는 것은 당신은 버튼에 리스너를 추가하지 마십시오

    m_popupSwitch.setOnAction(new EventHandler<ActionEvent>() 
    { 
        @Override public void handle(ActionEvent e) 
        { 
         System.out.println("OUTPUT"); 
        } 
    }); 
    

    Reference Here

    +0

    아니요, 그 중 하나를 얻을 수 없습니다! 이 버튼은 ToggleButton입니다. 다른 Toggle을 선택하면 해당 이벤트를 처리하고 싶습니다 ... –

    +0

    질문을 편집 할 수 있습니까? 당신의 질문은 그것을 묻지 않습니다. –

    0

    , 당신은 누구의 핸들 방법 버튼을 누를 때 호출되는 이벤트 핸들러를 설정 레지스터 . 이처럼 :

    m_popupSwitch.setOnAction(new EventHandler<ActionEvent>() { 
    
           @Override 
           public void handle(ActionEvent event) { 
            System.out.println("OUTPUT "); 
    
           } 
          }); 
    
    +0

    아니, 나는 그걸 가지 않을거야! 이 Button은 ToggleButton입니다. 다른 Toggle을 선택하면 해당 이벤트를 처리하려고합니다. –