2017-03-24 2 views
1

내 메뉴 모음을 인스턴스화하고 두 번째 클래스는 이벤트를 처리하는 반면 두 개의 별도 클래스를 만들었습니다. 메뉴 바에 많은 옵션을 가지고 있기 때문에 다루고 싶습니다.보조 클래스를 활용하여 내 이벤트를 처리하려면 어떻게해야합니까?

메뉴 모음이 있고 구조가 모두 설정되었으므로 다음 단계는 사용자가 메뉴 모음에서 옵션을 클릭 할 때 이벤트를 처리하는 것입니다.

다음
JMenuItem addOrangeItem = new JMenuItem("Orange"); 
    addOrangeItem.addActionListener(new MenuActionListener().orangeActionPerformed(e)); 

    JMenuItem addAppleItem = new JMenuItem("Apple"); 
    addAppleItem.addActionListener(new MenuActionListener().appleActionPerformed(e)); 

것은 내 이벤트 처리의 클래스 : 여기

내 메인 메뉴 바 클래스의 두 항목의 미리보기의 문제는 내 메인 메뉴에서 코드 줄에 놓여

public class MenuActionListener implements ActionListener { 

    public void orangeActionPerformed(ActionEvent e) { 
    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("I have chosen an orange!"); 
    } 


    public void appleActionPerformed(ActionEvent e) { 
    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("I have chosen an apple!"); 
    } 
} 

-bar 클래스 :

addAppleItem.addActionListener(new MenuActionListener().appleActionPerformed(e)); 내 ActionEvent에 대한 e에는 빨간색으로 밑줄이 표시되어 있으며 제대로 작동하려면 무엇을해야할지 모르겠습니다.

내 코드의 목표는 Apple/orange 항목/s를 선택하는 것이고 내 이벤트 처리 클래스는 코드를 반환합니다.

제 질문은 어떻게하면 위의 코드 줄을 편집하여 메뉴 막대 항목을 올바르게 처리 할 수 ​​있습니까?

더 자세한 정보가 필요하면 알려 주시면 바로 받으실 수 있습니다.

도움을 주시면 감사하겠습니다.

+0

줄은'addAppleItem.addActionListener (new MenuActionListener());') - 기본적으로 함수를 실행하기 전에 MenuActionListener의 인스턴스를 ActionListener로 addAppleItem 객체에 추가하고 그 결과 값을 추가하려고했습니다 ActionListener로서의 기능 –

답변

1

잘못된 구문 (addActionListener(new MenuActionListener().orangeActionPerformed(e)))입니다.

addActionListener은 (new MenuActionListener().orangeActionPerformed(e)의 결과)를 ActionListener 객체가 아닌 void을 원하고, 또한 e 알 수없는 변수는 여기에있다. addActionListener(new MenuActionListener()),하지만 당신은 누르면 항목에 따라 다른 작업이 필요하기 때문에, 당신은 작업 명령 시스템을 사용할 수 있습니다 :

이 작동합니다 JMenuItem은 (또한 ActionListener의 인스턴스는 참고 당신에 조치 명령을 설정

을 충분히) 두 버튼에 대한 :

ActionListener listener = new MenuActionListener(); 

JMenuItem addOrangeItem = new JMenuItem("Orange"); 
addOrangeItem.setActionCommand("orange");// set action command 
addOrangeItem.addActionListener(listener); 

JMenuItem addAppleItem = new JMenuItem("Apple"); 
addAppleItem.setActionCommand("apple");// set action command 
addAppleItem.addActionListener(listener); 

그런 다음) actionPerformed에 (청취자의 조치 명령을 검색하고 무엇을 결정 :

setActionCommandAbstractButton의 메서드이고, 예를 들어 JButton에서도 사용할 수 있습니다.

+0

대단히 감사합니다. – juiceb0xk

관련 문제