JMenuItem setEnabled()

Odpowiedz Nowy wątek
2006-08-05 17:24
początkujący_
0

Witam, czy zna może ktoś metodę jak deaktywować JMenuItem odpowiadający za wyświetlenie nowego okna
tak a żeby nie mozna było poprzez ta pozycję JMenuItem drugi raz wyświetlić tego samego okna, kombinowałem troszkę z wyłapywaniem zdarzeń okna ale nie wychodzi :( wyrzuca błedy aplikacyjka.
Menu odpowiada za wyświetlanie wielu nowych okienek a każde okienko musi być otworzone tylko w 1 egzemplarzu.


class dzialanie_menu extends AbstractAction
{
    public dzialanie_menu(String nazwa)
    {
        super(nazwa);
    }

    public void actionPerformed(ActionEvent zdarzenie)
    {
        Object dzialanie = getValue(Action.NAME);

            if(dzialanie == "Zakończ pracę")
            {
                            System.exit(0);

            }

            else if(dzialanie == "Kalkulator kasowy")
            {
                Okno_Kasa okno = new Okno_Kasa();
                okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                okno.show();

            }

            else if(dzialanie == "Przeliczanie dni ")
            {

                okno1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                okno1.show();
                ILEdni.setEnabled(false);

            }

    }

private class sluchacz_menu implements MenuListener
        {

            public void menuSelected(MenuEvent zd)
            {

                                ILEdni.isEnabled();

            }

            public void menuDeselected(MenuEvent zd){}
            public void menuCanceled(MenuEvent zd){}
        }

Jeżeli ktoś zna rozwiązanie to proszę o pomoc

Pozostało 580 znaków

2006-08-05 21:28
0

hej

mozesz zrobic tak: utwprzyc sluchacza, ktory bedzie np tylko odpowiedzialny za deaktywowanie okna, w tym sluchaczu skorzystaj z metody "getSource()", ktora zwraca zrodlo zdarzenia, czyli komponent ktory wywolal zdarzenie, u Ciebie JMenuItem. Pamietaj ze ta metoda zwraca komponent wiec wynik musisz rzutowac , np. tak: JComponent comp = new (JComponent) e.getSource(); Tutaj masz krotki przyklad, po kliknieciu w przycisk wysietla sie napis, u Ciebie tworzy okno, ale drugi raz juz nie mozna kliknac, bo po pierwszym kliknieciu wystepuje metoda setEnabled(false); i komponent jest deaktywowany. Oczywiscie mozesz dolaczyc osobno sluchacza do kazdego komponentu tworzac anonimowa klase wewnetrzna jednak w przypadku duzej ilosci takich klas to zly pomysl

import java.awt.;
import java.awt.event.
;
import javax.swing.*;

class MojaForum extends JFrame implements ActionListener
{
MojaForum()
{
Container cp = getContentPane();
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu("file");
JMenuItem mi = new JMenuItem("ddd");
mi.addActionListener(this);
menu.add(mi);
mb.add(menu);
setJMenuBar(mb);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
show();
}

public void actionPerformed(ActionEvent e)
{
    JComponent comp = (JComponent)e.getSource();
    System.out.println("dsfsdf");
    comp.setEnabled(false);
}

public static void main(String[] args)
{
    new MojaForum();
}

}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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