Ação em um JMenuItem, help

Ola pessoal, poderiam me ajudar, por favor.

Eu fiz um JMenuBar através de um um método que usa um loop e usa um vetor de String para colocar o texto no JMenuItem, eu não sei se é a melhor pratica mas é que o anterior que eu fiz tinha ficado enorme, fiz dessa forma para diminuir. Porém, eu não sei como colocar ação no JMenuItem, me ajudem?

Eu tentei fazer como o normal que seria o getSource(), mas não funciona.

Eu tentei usar o getSelectItem()

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.WindowConstants;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class principal1 extends JFrame{
   private String[] nomeMenu = {"New", "Open", "Exit", "Copy", "Paste", "Delete"};
   JMenu file = new JMenu("File");
   JMenu edit = new JMenu("Edit");
   public principal1() {
      super();
      initialize();
   }
   private void initialize(){
      this.setTitle("Aplicação com menu");
      this.setJMenuBar(barMenu());
      this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      this.setSize(800,600);
      this.setVisible(true);
   }
   public JMenuBar barMenu(){
      JMenuBar barraMenu = new JMenuBar();
      for(int i = 0; i < nomeMenu.length; i++){
         if(i >= 0 && i <= 2){
            JMenuItem mnuFile = new JMenuItem("",KeyEvent.VK_T);
            mnuFile.setText(nomeMenu[i]);
            mnuFile.addActionListener(
               new ActionListener() {
                  public void actionPerformed(ActionEvent evt) {
                  }
               });
            file.add(mnuFile);
            barraMenu.add(file);
         }
         else{
            JMenuItem mnuEdit = new JMenuItem("",KeyEvent.VK_T);
            mnuEdit.setText(nomeMenu[i]);
            mnuEdit.addActionListener(
               new ActionListener() {
                  public void actionPerformed(ActionEvent evt) {
                  }
               });
            edit.add(mnuEdit);
            barraMenu.add(edit);
         }
      } 
      return barraMenu;  
   }
   public static void main(String[] args) {
      new principal1();
   }
}

Consegui fazer de um jeito pessoal, mas caso vocês tenham uma mais eficiente e puder compartilhar, ficarei grato. \o

   public JMenuBar barMenu(){
      JMenuBar barraMenu = new JMenuBar();
      for(int i = 0; i < nomeMenu.length; i++){
         if(i >= 0 && i <= 2){
            JMenuItem mnuFile = new JMenuItem("",KeyEvent.VK_T);
            mnuFile.setText(nomeMenu[i]);
            mnuFile.addActionListener(
               new ActionListener() {
                  public void actionPerformed(ActionEvent evt) {
                     if(nomeMenu[0] == mnuFile.getText()){
                        System.out.println("deu certo "+nomeMenu[0]);
                     }else if (nomeMenu[1] == mnuFile.getText()){
                        System.out.println("deu certo "+ nomeMenu[1]);
                     }else{
                        System.exit(0);
                     }
                  }
               });
            file.add(mnuFile);
            barraMenu.add(file);
         }
         else{
            JMenuItem mnuEdit = new JMenuItem("",KeyEvent.VK_T);
            mnuEdit.setText(nomeMenu[i]);
            mnuEdit.addActionListener(
               new ActionListener() {
                  public void actionPerformed(ActionEvent evt) {
                  }
               });
            edit.add(mnuEdit);
            barraMenu.add(edit);
         }
      } 
      return barraMenu;  
   }
mnuEdit.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            //Você deve colocar as ações do menu item aqui ou chamar o método a ser executado
        }
});

Praticamente pronto:

import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

@SuppressWarnings("serial")
public class TelaPrincipal extends JFrame {

	public static void main(String[] args) {
		try {
			TelaPrincipal telaPrincipal = new TelaPrincipal();
			telaPrincipal.setDefaultCloseOperation(EXIT_ON_CLOSE);
			telaPrincipal.setVisible(true);
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}

	public TelaPrincipal() {
		super("Aplicação com menu");
		setJMenuBar(createMenuBar());
		setSize(800, 600);
	}

	private JMenuBar createMenuBar() {
		JMenuBar menuBar = new JMenuBar();
		menuBar.add(createMenuFile());
		menuBar.add(createMenuEdit());
		return menuBar;
	}

	private JMenuItem createMenuItem(String nome, int teclaDeAtalho, ActionListener actionListener) {
		JMenuItem item = new JMenuItem(nome, teclaDeAtalho);
		item.addActionListener(actionListener);
		return item;
	}

	private JMenu createMenuEdit() {
		JMenu menu = new JMenu("Edit");
		// aqui fará algo parecido como que foi feito no createMenuFile()
		return menu;
	}

	private JMenu createMenuFile() {
		JMenu menu = new JMenu("File");
		menu.add(createMenuItem("New",    KeyEvent.VK_N, event -> fileNew()));
		menu.add(createMenuItem("Open",   KeyEvent.VK_O, event -> fileOpen()));
		menu.add(createMenuItem("Exit",   KeyEvent.VK_E, event -> fileExit()));
		menu.add(createMenuItem("Copy",   KeyEvent.VK_C, event -> fileCopy()));
		menu.add(createMenuItem("Paste",  KeyEvent.VK_P, event -> filePaste()));
		menu.add(createMenuItem("Delete", KeyEvent.VK_D, event -> fileDelete()));
		return menu;
	}

	private void fileNew() {
		System.out.println("File -> New");
	}

	private void fileOpen() {
		System.out.println("File -> Open");
	}

	private void fileExit() {
		System.out.println("File -> Exit");
	}

	private void fileCopy() {
		System.out.println("File -> Copy");
	}

	private void filePaste() {
		System.out.println("File -> Paste");
	}

	private void fileDelete() {
		System.out.println("File -> Delete");
	}
}

A forma como eu fiz o menu está incorreta ou poderia ser utilizada em uma aplicação?
Essa expressão " -> " serve para que? Algo relacionado a atribuição?

menu.add(createMenuItem("New", KeyEvent.VK_N, event -> fileNew()));

Obrigado pela demonstração.

Isso é uma expressão lâmbda, é uma forma de você escrever menos código, ela pode ser utilizada quando você tem interfaces de um único método, como por exemplo a interface ActionListener, que só possui o método actionPerformed(ActionEvent).

A linha abaixo:

menu.add(createMenuItem("New", KeyEvent.VK_N, event -> fileNew()));

Equivale ao código abaixo:

menu.add(createMenuItem("New", KeyEvent.VK_N, new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        fileNew();
    }
}));

Entendi, bem mais prático dessa forma.

Agradeço a atenção.