2017-10-06 1 views
0

에서의 actionPerformed 방법을 구별하는 방법 내가하는 JComboBoxsetSelectedItem 호출 및 JComboBox에

public void actionPerformed(ActionEvent e) 
{ 
    Object source = e.getSource(); 
    if(source.equals(listComboBox)) 
    { 
     changeList(); 
    } 
} 


public void changeList() 
{ //do some stuff 
..... 
..... 
//warn the user 
} 

내 문제에 값 변화의 이벤트에서 호출되는 메소드는,이 메소드가 호출됩니다이다가 초기로드 방법. 이 방법에는 경고 메시지 팝업이 있습니다. 사용자가 콤보 상자의 선택된 값을 변경할 때만 필요합니다 (로딩 메서드에서 코드의 값을 설정하지 않았을 때).

구분할 수있는 방법 (플래그, 다른 방법)이 있습니까? 이들 사이에 행동이 필요하고 경고 메시지를 줄 때만 필요합니까?

+0

[Java JComboBox에서 변경 선택 이벤트 수신] 가능한 복제본 (https://stackoverflow.com/questions/17576446/java-jcombobox-listen-a-change-selection-event) – Berger

답변

0

두 가지 옵션이 있습니다. 첫 번째는 각 구성 요소에 고유 한 리스너를 적용하고 이벤트를 다르게 처리하는 것입니다. 대부분의 경우 선호하기 때문에 각 구성 요소에 대해 코드를 간단하게 유지하고 읽는 것이 더 쉽습니다.

두 번째 것은 이벤트를 트리거하는 구성 요소를 식별하는 것입니다. 한 가지 방법은 이벤트의 소스를 가져 와서 실제 객체와 일치하는지 확인하는 것입니다. 또는 JComboBox의 인스턴스가 'instanceof'인지 확인한 후 기꺼이 이벤트를 처리 할 수 ​​있습니다.

if(sourceObject == myComboBox){ 
    // handle the event 
} 

또는

if(sourceObject instanceof JComboBox{ 
    // then we are dealing with a combobox 
    // if it's the only one then you know what to do.. 
} 
1

내 문제는이 방법뿐만 아니라 초기로드 방법에 호출된다는 것이다.

로드가 완료된 후 리스너를 콤보 상자에 추가하십시오.

관련 문제