Problem z JMenu z MenuCheckBoxItem.Prośba o pomoc,wskazówkę.

0
package menu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;


public class JMenuTest extends JFrame implements ActionListener
{
    JMenuBar menuBar;
    JMenu menuPlik,menuNarzędzia,menuOpcje,menuPomoc;
    JMenuItem mOtwórz,mZapisz,mWyjście,mNarz1,mNarz2,mOpcja1,mOProgramie;
    JCheckBoxMenuItem chOpcja2;

    public static void main(String[] args) 
   {
    JMenuTest appmenu=new JMenuTest();
    appmenu.setVisible(true);
   }

    public JMenuTest
    {
     setTitle("Demonstracja JMenuBar");
     setSize(800,800);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setLayout(null);
     menuBar=new JMenuBar();
     menuPlik=new JMenu("Plik");

     mOtwórz=new JMenuItem("Otwórz",'O');
     mZapisz=new JMenuItem("Zapisz");
     mWyjście= new JMenuItem("Wyjście");

      menuPlik.add(mOtwórz);
      menuPlik.add(mZapisz);
      menuPlik.addSeparator();
      menuPlik.add(mWyjście);

      mWyjście.addActionListener(this);
      mWyjście.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));

     menuNarzędzia=new JMenu("Narzędzia");
     mNarz1=new JMenuItem("Narz1");
     mNarz1.setEnabled(false);
     mNarz2=new JMenuItem("Narz2");
     menuNarzędzia.add(mNarz1);
     menuNarzędzia.add(mNarz2);

        menuOpcje=new JMenu("Opcje");
        mOpcja1=new JMenuItem("Opcja1");
        chOpcja2=new JCheckBoxMenuItem("Opcja2"); 
        chOpcja2.addActionListener(this);
        menuOpcje.add(mOpcja1);
        menuOpcje.add(chOpcja2);
        menuNarzędzia.add(menuOpcje);

     menuPomoc=new JMenu("Pomoc");

     mOProgramie=new JMenuItem("O Programie");
     menuPomoc.add(mOProgramie);

     setJMenuBar(menuBar);
     menuBar.add(menuPlik);
     menuBar.add(menuNarzędzia);
     menuBar.add(menuPomoc);
    }

@Override
public void actionPerformed(ActionEvent e) 
{
    Object z=e.getSource();
    if(z==mWyjście)
    {
        dispose();
    }
    if(z==chOpcja2.isSelected())
    {
        mNarz1.setEnabled(true);
    }
        else if(!chOpcja2.isSelected())
        {
            mNarz1.setEnabled(false);
        }    
    }
}

W netbeans działa menu,ale nie działa checkboxitem,a w eclipse w ogóle nie odpala.Powiedzcie co trzeba poprawić.

usunięcie zbędnych pustych linii z kodu - fp

1

Ten program nie ma prawa się odpalić. Co to jest?

 public JMenuTest

Do JCheckBoxMenuItem powinieneś dodać ChangeListenera, a nie ActionListenera. A jeśli koniecznie chcesz z ActionListenerem to tak:

    if(z == chOpcja2)
    {
        if(chOpcja2.isSelected())
        {
            mNarz1.setEnabled(true);
        }
        else
        {
            mNarz1.setEnabled(false); 
        }
    }
0

Serdeczne dzięki : ).W eclipsie nadal coś pierdzieli żadna wersja się nie uruchamia,ale mniejsza z tym,w NetBeansie obie wersje odpalają zarówno z ActionListenerem,jak i z ChangeListenerem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1