2010-05-24 3 views
0

Java에서 두 개의 상태, mousePressed 및 mouseReleased가있는 사용자 정의 버튼을 만들고 있습니다. 동시에이 버튼을 재사용하고 다른 이벤트 리스너가 등록 할 수 있도록하려면 적절한 조치를 취해야합니다 (이것은 JButton이 사용될 수 있지만 hw 지정이므로 우리는클래스를 Java에서 이벤트 소스로 만들기

  • 재정의 addActionListener에 (의 ActionListener 액션)
  • 재정의 removeActionListener (ActionListener를 동작)
  • 목록 목록 = 새로운 목록 (같은 개인 변수가 : 우리가하는 JButton처럼 행동하는 우리 자신의 버튼을 만들 수 있다는 것을 보여) 이벤트가 추가 될 때를 추적하고 for 루프가 모든 액션을 수행 할 수있는 일종의 함수를 추적합니다. 여기까지 제가 가지고있는 것입니다 :

    ,

    Public 클래스 CustomButton 공공 정적 무효 메인 (문자열 []에 args) {{ EventQueue.invokeLater (신규의 Runnable() { 공개 무효 실행() { CustomButtonFrame 프레임 = 새로운 CustomButtonFrame(); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setVisible (true); } });

    public void addActionListener(ActionListener al) 
        { 
         listenerList.add(al); 
        } 
    
        public void removeActionListener(ActionListener al) 
        { 
         listenerList.remove(al); 
        } 
    
        private void notifyListeners() 
        { 
         for (ActionListener action : listenerList) { 
          action.actionPerfomed(); 
         } 
        } 
    
        List<ActionListener> listenerList = new ArrayList<ActionListener>(); 
    } 
    

}

내가 컴파일 오류를 받고 있어요 : 라인 38 : 목록에 참조가 모호, 자바 java.util의 수업 java.awt.List의 두 클래스를 java.util.List가. awt 일치 목록 listenerList = new ArrayList();

및 34 행 : 인터페이스 java.awt.event.ActionListener에서 actionPerfomed() 메소드를 찾을 수 없습니다. action.actionPerformed();

+0

사용자 정의 버튼이 javax.swing.JButton 또는 이와 유사한 것을 상속합니까? 이 경우 사용자 지정 메서드를 전혀 추가하지 않아도됩니다. 그렇지 않으면 목록에 다른 사람들이 그것을 사용하는 데 필요한 모든 방법이 제공됩니다. –

+0

같은 애플리케이션이나 다른 애플리케이션의 다른 버튼에서 동일한 버튼이나 동일한 메커니즘을 사용하고자하는지 설명 할 수 있습니까? 일단 당신이 정교하게되면 나는 대답을 추가 할 것이다 ... – TacB0sS

답변

1

아니요, 완전히 아닙니다!

JButton에는 필요한 모든 것이 있습니다. 버튼에 직접 청취자를 추가하십시오. 무언가를 무효화하지 마십시오. 그냥 같이 :

public class MyButton extends JButton implements MouseListener // maybe you want to add other listeners... separate them with comma's. 
{ 
    public MyButton(String caption) 
    { 
     super(caption); 
     addMouseListener(this); 
    } 

    // implement your listener methods here 

} 
0

나는이 개 상태가 자바 ,의 mousePressed에서 사용자 지정 버튼을 만들고 있어요, 그리고 아마 당신이 JToggleButton를 사용한다

을의 mouseReleased.