[ nesa0802 @ 25.10.2008. 02:08 ] @
Pravim neki Graficki interfejs pa imam sledeci problem. Imam dve klase recimo kao ove dole.
Kako da omogucim zatvaranje aplikacije kada kliknem na Izlaz u meni baru, i da li je tako nesto u ovoj situaciji moguce.
Code:

import javax.swing.*;
public class KorisnickiInterfejs extends JFrame
{
    public KorisnickiInterfejs()
    {
        setBounds(50, 50, 1000, 700);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setJMenuBar(new Meni());
        setVisible(true);
    }
}
Code:

import javax.swing.*;
public class Meni extends JMenuBar
{
    public Meni()
    {
        JMenu fascikla=new JMenu("Fascikla");
                JMenuItem izlaz=new JMenuItem("Izlaz");
        add(fascikla);
        fascikla.add(izlaz);
    }
}
[ Nikola Poša @ 25.10.2008. 11:40 ] @
Probaj da ispod JMenuItem izlaz=new JMenuItem("Izlaz"); dodash ovo:
Code:

izlaz.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent d) {
                dispose();
            }
});

Obrati pazhnju da napishesh sve zagrade...
[ nesa0802 @ 25.10.2008. 13:07 ] @
Ne, ovo sam znao i ja.
[ Cyberghost @ 26.10.2008. 15:06 ] @
Evo kako to kod mene radi:

Code:

final JMenuItem exitMenuItem = new JMenuItem();
        exitMenuItem.setToolTipText("Zatvori program");
        exitMenuItem.setMnemonic('z');
        exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
        exitMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent arg0) {
                zatvoriProgram("Zatvaranje programa");
            }
        });
        
        exitMenuItem.setText("Izlaz");
        fileMenu.add(exitMenuItem);

// i deo koda koji pita za izlazak da se potvrdi

private void zatvoriProgram(String naslov)
    {
        AskYN yn = new AskYN(); // jednostavan JDialog sa DA i NE
            if (yn.izbor(naslov, "Da li ste sigurni da želite da napustite program ?"))
                {
                    System.exit(1);
                }
    }




Mislim da tebe ovo zanima: System.exit(1);
[ nesa0802 @ 26.10.2008. 23:09 ] @
Da to sam trazio. Hvala.
[ nesa0802 @ 06.12.2008. 19:21 ] @
Koliko je ovakav nacin rada praktican u slucajevima kada stavke iz menija treba da kontrolisu nesto u grafickom interfejsu.
[ Ivan Ivanic @ 06.12.2008. 19:55 ] @
Nije uopste praktično. Lose je da stavljaš taj kod u dve klase. Ovde si imao jednostavnu operaciju, izlazak iz programa. A to mozes da pozoveš iz bilo koje klase koja učestvuje u izvršenju programa. Da bi zavrsio program dovoljno je da pozoveš tu operaciju u kodu koji se trenutno izvršava ma kojoj klasi pripadao posto je to globalna funkcija. A sla ćeš kada budeš morao da uradis nesto sa članovima GUI koji su dostupni samo članovima GUI. Bolje ti je da meni bude član klase GUI jer će onda imati pristup svim ostalim članovima GUI. Recimo da imas tabove kao deo GUI bilo bi ti stoput lakse da manipulišes iz menija tabovima ako meni ima direktan pristup njima. Razmisli malo o tome.
I gledaj da u ovako jednostavnim primerima sto više koristiš postojeće klase, a ne da praviš svoje samo radi pravljenja :) ok je za vežbu ali nemoj sebi komplikovati koristi isprobane i 1000000 puta testirane sisteme koji vec postoje :)
aj nek ti je sa srećom ;)
[ Astral Projection @ 06.12.2008. 22:40 ] @
System.exit(n) == Runtime.getRuntime().exit(n)
>> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html