자바 JFrame에서 메뉴를 만드는 중입니다. 같은 클래스에서 서로 다른 이벤트에 대해 서로 다른 응답을하는 두 가지 방법을 보았습니다. https://stackoverflow.com/a/10472395/5960074어떤 수업에서 여러 행동을하는 것이 더 낫습니까? actionPerformed()의 익명 내부 클래스 또는 if 문?
public static void createMenuBar()
{
//Main Menu Items
menubar.add(fileMenu);
MainWindow.window.setJMenuBar(menubar);
//Sub menu items
saveItem = new JMenuItem("Save");
loadItem = new JMenuItem("Load");
//Add to the "File" menu item
fileMenu.add(saveItem);
fileMenu.add(loadItem);
//Anonymous Inner classes for actionListeners
//Action event for saving
saveItem.addActionListener(new ActionListener(){ //adding the listener
@Override
public void actionPerformed(ActionEvent e){ //creating the specific action for save
System.out.println("You tried to save.");
}
});
}
를 내 코드는 다음과 같습니다과이 시점에서 같이 (작동에서는 당신은 저장하려고 "인쇄 : 몇 년 전부터이 답변에 설명 된대로 하나는 익명의 내부 클래스를 사용하는 것입니다 . "콘솔에).
다른 사람들이 클래스에서 ActionListener를 구현 한 다음 actionPerformed() 메소드에서 이벤트 원본을 추적하는 if 문을 사용하는 것을 보아 왔습니다. 따라서 이벤트가 하나 있지만 이벤트를 트리거하는 코드가 변경됩니다.
첫 번째 방법은 어수선하고 두 번째 방법은 읽기 쉽습니다. 두 번째 방법보다 첫 번째 방법을 사용해야하는 이유가 있습니까?
감사합니다.
대답은, 둘 다 아니며 둘 다입니다. 그것은 필요에 따라 내려갈 것입니다. 'Action' API는 재사용 가능한 코드 블록을 생성하는 또 다른 방법입니다 – MadProgrammer
왜 다른 사람이 더 잘 작동하는지 이유를 생각해 볼 수 있습니까? 사용자가 데이터를 저장하고로드 할 수있는이 클래스가있는 메뉴 모음을 설정하려고합니다. – admiralmattbar
"더 나은"의견을 구하는 것이 무엇입니까. 다양한 스타일을 적용하고 가독성에 영향을 미치는 방식과 스타일을 전환 할 때를 경험하십시오. –