Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

JMenuBar i problem otvaranja i zatvaranja JFrame-ova

[es] :: Java :: JMenuBar i problem otvaranja i zatvaranja JFrame-ova

[ Pregleda: 1203 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tozaaa
ne radim

Član broj: 239785
Poruke: 7
*.dynamic.isp.telekom.rs.



Profil

icon JMenuBar i problem otvaranja i zatvaranja JFrame-ova04.04.2010. u 18:10 - pre 171 meseci
Imam aplikaciju koja ima 5 prozora (JFrame). U svakom od tih prozora napravio sam JMeni preko koga moze da se otvori jedan od drugih prozora i istovremeno zatvori postojeci. Takvim pristupom dolazi do ponavljanja JMeni koda u svakoj JFrame klasi. Zbog toga sam napravio zasebnu klasu "Meni" koja extends JMeniBar.


package client;

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


public class Meni extends JMenuBar{

JMenu menu;
JMenuItem menuItem;
private boolean obradaPacijenti;
private boolean istorijaPacijenata;
private boolean raspored;
private boolean materijal;
private boolean usluge;

public Meni(boolean obradaPacijenti, boolean istorijaPacijenata,
boolean raspored, boolean materijal, boolean usluge ){
this.obradaPacijenti=obradaPacijenti; this.istorijaPacijenata=istorijaPacijenata;
this.raspored=raspored; this.materijal=materijal; this.usluge=usluge;
dodajMeni();
}

public void dodajMeni(){
menu=new JMenu("Opcije"); this.add(menu);

if(raspored){
menuItem=new JMenuItem("Raspored", KeyEvent.VK_R);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d){
try{
new PanelRaspored().setVisible(true);
}catch(Exception b){};
// pre je ovde bilo dispose() ali u ovom slucaj ne moze
}
});
menu.add(menuItem);
}


if(istorijaPacijenata){

menuItem=new JMenuItem("Istorija", KeyEvent.VK_I);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d){
int jmbr=0;
try{
// jmbr=(Integer)jtabla.getValueAt(jtabla.getSelectedRow(), 0);
}catch(Exception bb){JOptionPane.showMessageDialog(null, "Morate da odaberete pacijenta");}
try{
new IstorijaPacijenta(jmbr, false).setVisible(true);
// pre je ovde bilo dispose() ali u ovom slucaj ne moze
}catch(Exception b){System.out.println(b);}
}
});
menu.add(menuItem);
}


if(materijal){

menuItem=new JMenuItem("Materijal", KeyEvent.VK_M);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d){
try{
new UnosMaterijal().setVisible(true);
}catch(Exception b){}
// pre je ovde bilo dispose() ali u ovom slucaj ne moze
}
});
menu.add(menuItem);
}


if(usluge){

menuItem=new JMenuItem("Usluge", KeyEvent.VK_U);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d){
try{
new UnosUsluge().setVisible(true);
}catch(Exception b){}
// pre je ovde bilo dispose() ali u ovom slucaj ne moze
}

});
menu.add(menuItem);
}



menuItem=new JMenuItem("Exit", KeyEvent.VK_X);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d){
// pre je ovde bilo dispose() ali u ovom slucaj ne moze
}
});
menu.add(menuItem);
}


}


Sad je dovoljno da svaka klasa JFrame definise Meni u dva reda i nema ponavljanja celog ovog koda iznad u svakoj klasi.



public class ObradaPacijenti extends JFrame implements ComponentListener{


public ObradaPacijenti(int JMBR, boolean noviPac) throws Exception {
....
Meni meni=new Meni(false, true, true, true, true);
setJMenuBar(meni);
....


I sve bi to radilo super da nemam sledeci problem. Problem koji ne znam da resim jeste kad objekat "Meni" otvara novi, kako da zatvorim postojeci JFrame. Molim za pomoc!
 
Odgovor na temu

tozaaa
ne radim

Član broj: 239785
Poruke: 7
*.dynamic.isp.telekom.rs.



Profil

icon Re: JMenuBar i problem otvaranja i zatvaranja JFrame-ova05.04.2010. u 13:37 - pre 171 meseci
Resio sam.


Code (java):

package client;

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


public class Meni extends JMenuBar{

    JMenu menu;
    JMenuItem menuItem;
    private boolean obradaPacijenti;
    private boolean istorijaPacijenata;
    private boolean raspored;
    private boolean materijal;
    private boolean usluge;

    public Meni(ActionListener parent, boolean obradaPacijenti, boolean istorijaPacijenata,
         boolean raspored, boolean materijal, boolean usluge ){
        this.obradaPacijenti=obradaPacijenti; this.istorijaPacijenata=istorijaPacijenata;
        this.raspored=raspored; this.materijal=materijal; this.usluge=usluge;
        dodajMeni(parent);
    }

    public void dodajMeni(ActionListener parent){

           menu=new JMenu("Opcije"); this.add(menu);

           if(raspored){
            menuItem=new JMenuItem("Raspored", KeyEvent.VK_R);
            menuItem.addActionListener(parent);
            menuItem.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent d){
                  try{                
                   new PanelRaspored().setVisible(true);
                  }catch(Exception b){};      
               }
            });
            menu.add(menuItem);
           }


          if(istorijaPacijenata){

            menuItem=new JMenuItem("Istorija", KeyEvent.VK_I);
            menuItem.addActionListener(parent);
            menu.add(menuItem);
          }


          if(materijal){

            menuItem=new JMenuItem("Materijal", KeyEvent.VK_M);
            menuItem.addActionListener(parent);
            menuItem.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent d){
                  try{
                   new UnosMaterijal().setVisible(true);
                  }catch(Exception b){}
               }
            });
            menu.add(menuItem);
          }


          if(usluge){

            menuItem=new JMenuItem("Usluge", KeyEvent.VK_U);
            menuItem.addActionListener(parent);
            menuItem.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent d){
                  try{
                   new UnosUsluge().setVisible(true);
                  }catch(Exception b){}
               }

            });
            menu.add(menuItem);
          }


            menuItem=new JMenuItem("Exit", KeyEvent.VK_X);
            menuItem.addActionListener(parent);
            menu.add(menuItem);
           
            }

 
        }
////////////////////////////////////////////////////////////////////////////////////////////



  public class ObradaPacijenti extends JFrame implements ActionListener{

     
    public ObradaPacijenti(int JMBR, boolean noviPac) throws Exception {
         
        ......
        Meni meni=new Meni(this, false, true, true, true, true);
        setJMenuBar(meni);
        .......

    }

 
    public void actionPerformed(ActionEvent e) {
       int jmbr=0;
       if(((JMenuItem)e.getSource()).getText().equals("Istorija")){
                  try{
                  jmbr=(Integer)jtabla.getValueAt(jtabla.getSelectedRow(), 0);
                  }catch(Exception bb){JOptionPane.showMessageDialog(null, "Morate da izaberete pacijenta");}
                    try{
                        new IstorijaPacijenta(jmbr, false).setVisible(true);
                        dispose();
                        }catch(Exception b){System.out.println(b);}
       }
       else dispose();
    }
 


 


[Ovu poruku je menjao misk0 dana 05.04.2010. u 20:17 GMT+1]
 
Odgovor na temu

[es] :: Java :: JMenuBar i problem otvaranja i zatvaranja JFrame-ova

[ Pregleda: 1203 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.