2017-10-01 6 views
0

포커스 리스너를 수행 된 동작으로 변경하는 방법, 버튼을 클릭했을 때 페이드 방법이 트리거됩니까?이벤트 리스너를 클릭했을 때 버튼 색상을 변경하십시오.

class FaderTimer implements FocusListener, ActionListener { 
    private ArrayList colors; 
    private JButton component; 
    private Timer timer; 
    private int alpha; 
    private int increment; 

    FaderTimer(ArrayList colors, JButton component, int interval) { 
     this.colors = colors; 
     this.component = component; 
     component.addFocusListener(this); 
     timer = new Timer(interval, this); 
    } 

    public void focusGained(FocusEvent e) { 
     alpha = 0; 
     increment = 1; 
     timer.start(); 
    } 

    public void focusLost(FocusEvent e) { 
     alpha = steps; 
     increment = -1; 
     timer.start(); 
    } 

    public void actionPerformed(ActionEvent e) { 
     alpha += increment; 

     component.setBackground((Color) colors.get(alpha)); 

     if (alpha == steps || alpha == 0) { 
      timer.stop(); 
     } 
    } 
} 
    } 
+1

당신은 두 개의'의 ActionListener's, 버튼 하나와 또한 고려해야하는'Timer' – MadProgrammer

+1

하나가 필요합니다 그 원래 코드가 페이드 인 및 아웃되므로 어떤 작업을 수행해야하는지 결정해야합니다 (페이드 인하거나 아웃) – MadProgrammer

+0

버튼을 클릭했을 때 페이드 인하 고 싶습니다. 어떻게 되나요? @MadProgrammer –

답변

0

당신은 사람들이 질문의 맥락을 알 필요가 질문을

. How to slowly change object color from one to another?

이 코드는 focusGained 및 focusLost 이벤트에서 배경을 페이드하도록 설계된 것입니다.

버튼 클릭으로이를 수행해야합니다. 그래서 기본적으로 focusGained (...) 이벤트에있는 로직을 호출하기 위해 ActionListener를 버튼에 추가해야합니다. 이 작업을 수행하는

한 가지 방법이 될 수 있습니다

//component.addFocusListener(this); 
component.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     alpha = 0; 
     increment = 1; 
     timer.start(); 
    } 
}); 
+0

예 @camickr, 내가 제공 한 링크에서 해당 코드를 복사했습니다. 내 질문에 소스 링크를 포함하지 않아서 유감이지만 답변을 주셔서 감사합니다. 시도해 보겠습니다. –

+0

원한다면 텍스트 필드가 비어 있지 않을 때 페이드 인되도록하고, 텍스트 필드가 비어있을 때 페이드 아웃하는 방법 @camickr –