-1

I have a lambda expression for swing menu.

    JMenu color = new JMenu("Color");
    color.add(new JMenuItem("Red")).addActionListener(evt -> panel.setSelectColor(Color.RED));
    color.add(new JMenuItem("Green")).addActionListener(evt -> panel.setSelectColor(Color.green));
    color.add(new JMenuItem("Blue")).addActionListener(evt -> panel.setSelectColor(Color.BLUE));

How can i set it enabled or disabled with the lambda function. I know i can do it with color.setEnabled(true); or color.setEnabled(false);

Peyo Peev
  • 107
  • 1
  • 10

1 Answers1

0

Change the lambda expression to a block and loop over all the items in the menue:

color.add(new JMenuItem("Red")).addActionListener(evt -> {
   panel.setSelectColor(Color.RED);
   for(int i = 0 ; i < color.getItemCount(); i++){
    color.getItem(i).setEnabled(!evt.getSource().equals(color.getItem(i)));
   }
});
Timothy Truckle
  • 15,071
  • 2
  • 27
  • 51