我正在製作java JFrame中的菜單。我看到了在同一個班級中對不同事件做出不同反應的兩種方式。一種是使用匿名內部類是從幾年前在這個答案說明: https://stackoverflow.com/a/10472395/5960074哪個更適合在課堂上進行多項操作?匿名內部類或者if語句在actionPerformed()中?
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
什麼是「更好」是徵求意見。應用不同的風格,並體驗它們如何影響可讀性以及何時從一個切換到另一個。 –