Witam wszystkich.
To mój pierwszy post. Jestem początkującym programistą Javy.
GUI piszę ręcznie Wink .

Mam klasę PasekMenu (odpowiada w całości za menu ), dodatkowo przy wybieraniu pozycji z menu ma ukrywać aktualne okienko a pokazywać wybrane. Chciałbym też aby ograniczała ilość obiektów tzn żeby był na przyklad tylko jeden obiekt Instrukcja itd. Wszystkie inne klasy dziedziczą po niej.

Klasa działa ale są 2 problemy:

  1. Nie działa ukrywanie okienek.
    Zrobiłem do tego specjalną metodę - widoczny. Jednak ta metoda działa tylko przy tworzeniu okienek , natomiast w ogóle nie ukrywa okienek.

  2. Przy wyborze elementu menu tworzony jest nowy obiekt mimo że już istnieje Sad.

Mam pytanie co robię nie tak:

Java:

   1.
       
   2.
      package terminarz_new;
   3.
      import java.awt.*;
   4.
      import java.awt.event.*;
   5.
      import javax.swing.*;
   6.
      import javax.swing.event.*;
   7.
       
   8.
      public class PasekMenu extends JFrame
   9.
      {
  10.
          public PasekMenu()
  11.
          {
  12.
       
  13.
       
  14.
       
  15.
              JMenu menuStart =new JMenu("Start");
  16.
                     
  17.
       
  18.
              JMenuItem elemTerminarz=menuStart.add(new DzialanieTestowe("Terminarz"));
  19.
              elemTerminarz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));
  20.
       
  21.
              menuStart.addSeparator();
  22.
              menuStart.add(new AbstractAction("Zamknij!")
  23.
              {
  24.
                  public void actionPerformed(ActionEvent zdarzenie)
  25.
                  {
  26.
                      System.exit(0);
  27.
                  }
  28.
              });
  29.
       
  30.
              JMenu menuUstawienia =new JMenu("Ustawienia");
  31.
       
  32.
              JMenuItem elemWyglad=menuUstawienia.add(new DzialanieTestowe("Wygląd"));
  33.
              elemWyglad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK));
  34.
       
  35.
              JMenuItem elemExport=menuUstawienia.add(new DzialanieTestowe("Export"));
  36.
              elemExport.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
  37.
       
  38.
              JMenuItem elemImport=menuUstawienia.add(new DzialanieTestowe("Import"));
  39.
              elemImport.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_MASK));
  40.
       
  41.
              JMenu menuPomocy =new JMenu("Pomoc");
  42.
       
  43.
              JMenuItem elemInstrukcja =menuPomocy.add(new DzialanieTestowe("Instrukcja obsługi"));
  44.
              elemInstrukcja.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));
  45.
       
  46.
              JMenuItem elemOprogramie=menuPomocy.add(new DzialanieTestowe("O programie"));
  47.
              elemOprogramie.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
  48.
       
  49.
              JMenuBar pasekMenu=new JMenuBar();
  50.
              setJMenuBar(pasekMenu);
  51.
       
  52.
              pasekMenu.add(menuStart);
  53.
              pasekMenu.add(menuUstawienia);
  54.
              pasekMenu.add(menuPomocy);
  55.
             
  56.
              setBackground(Color.red);
  57.
             
  58.
      }
  59.
       
  60.
      class DzialanieTestowe extends AbstractAction
  61.
      {
  62.
       
  63.
         
  64.
      public void widoczny(String nazwa)
  65.
          {
  66.
             
  67.
          if (nazwa.equalsIgnoreCase("wyglad"))
  68.
          {
  69.
              wyglad.show();
  70.
              wyglad.show();
  71.
              wyglad.show();
  72.
              if(about !=null) about.hide();
  73.
              if(instrukcja !=null) instrukcja.hide();
  74.
              if(terminarz !=null) terminarz.hide();
  75.
          }
  76.
         
  77.
          else if (nazwa.equalsIgnoreCase("about"))
  78.
          {
  79.
              about.show();
  80.
              if(wyglad !=null) wyglad.hide();
  81.
              if(instrukcja !=null) instrukcja.hide();
  82.
              if(terminarz !=null) terminarz.hide();
  83.
          }
  84.
         
  85.
          else if (nazwa.equalsIgnoreCase("instrukcja"))
  86.
          {
  87.
              instrukcja.show();
  88.
              if(about !=null) about.hide();
  89.
              if(wyglad !=null) wyglad.hide();
  90.
              if(terminarz !=null) terminarz.hide();
  91.
          }
  92.
         
  93.
          else 
  94.
          {
  95.
              terminarz.show();
  96.
              if(about !=null) about.hide();
  97.
              if(instrukcja !=null) instrukcja.hide();
  98.
              if(wyglad !=null) wyglad.hide();
  99.
          }
 100.
         
 101.
          /*if  (wyglad !=null)
 102.
             {
 103.
                 if (nazwa.equalsIgnoreCase("wyglad"))
 104.
                  wyglad.show();
 105.
                               
 106.
                  else
 107.
                  wyglad.hide();
 108.
                 
 109.
             }
 110.
             if  (about !=null)
 111.
             {
 112.
              if (nazwa.equalsIgnoreCase("about"))
 113.
                  about.show();
 114.
                 
 115.
              else
 116.
                  about.hide();
 117.
                 
 118.
             }
 119.
             if (instrukcja !=null )
 120.
             {
 121.
             if (nazwa.equalsIgnoreCase("instrukcja"))
 122.
                  instrukcja.show();
 123.
                 
 124.
              else
 125.
                  instrukcja.hide();
 126.
                 
 127.
             }
 128.
 129.
             if (terminarz !=null)
 130.
             {
 131.
              if (nazwa.equalsIgnoreCase("terminarz"))
 132.
                  terminarz.show();
 133.
               
 134.
              else
 135.
                  terminarz.hide();
 136.
                 
 137.
             }
 138.
              */
 139.
      }
 140.
       
 141.
          public DzialanieTestowe(String nazwa) { super(nazwa); }
 142.
       
 143.
          public void actionPerformed(ActionEvent zdarzenie)
 144.
          {
 145.
       
 146.
          Point p =getLocation();
 147.
                   int x=p.x;
 148.
                   int y=p.y;
 149.
       
 150.
       
 151.
               if (getValue(Action.NAME)=="O programie")
 152.
              {
 153.
       
 154.
                  if (about !=null)
 155.
                  {
 156.
                      about.zmienLocal(x, y);
 157.
       
 158.
                      widoczny("about");
 159.
                  }
 160.
                  else
 161.
                  {
 162.
       
 163.
                   about=new About();
 164.
                   about.zmienLocal(x, y);
 165.
                   widoczny("about");
 166.
                  }
 167.
              }
 168.
       
 169.
                  if (getValue(Action.NAME)=="Wygląd")
 170.
              {
 171.
       
 172.
                  if (wyglad !=null)
 173.
                  {
 174.
                    wyglad.zmienLocal(x, y);
 175.
                    widoczny("wyglad");
 176.
                  }
 177.
                  else
 178.
                  {
 179.
                   wyglad=new Wyglad();
 180.
                   wyglad.zmienLocal(x, y);
 181.
                   widoczny("wyglad");
 182.
                  }
 183.
              }
 184.
       
 185.
                 if (getValue(Action.NAME)=="Instrukcja obsługi")
 186.
              {
 187.
       
 188.
                  if (instrukcja !=null)
 189.
                  {
 190.
                      instrukcja.zmienLocal(x, y);
 191.
                      widoczny("instrukcja");
 192.
                  }
 193.
                  else
 194.
                  {
 195.
                   instrukcja=new Instrukcja();
 196.
                   instrukcja.zmienLocal(x, y);
 197.
                   widoczny("instrukcja");
 198.
                  }
 199.
              }
 200.
       
 201.
       
 202.
       
 203.
               if (getValue(Action.NAME)=="Terminarz")
 204.
              {
 205.
       
 206.
                  if (terminarz !=null)
 207.
                  {
 208.
                      terminarz.zmienLocal(x, y);
 209.
                      widoczny("terminarz");
 210.
                  }
 211.
                  else
 212.
                  {
 213.
                  terminarz=new Terminarz();
 214.
                  terminarz.zmienLocal(x, y);
 215.
                  widoczny("terminarz");
 216.
                  }
 217.
              }
 218.
                   
 219.
       
 220.
             
 221.
          }
 222.
       
 223.
             
 224.
        }
 225.
      public  Wyglad  wyglad;
 226.
      public  About   about;
 227.
      public  Instrukcja instrukcja;
 228.
      public  Terminarz  terminarz;
 229.
         
 230.
      }
 231.
       



---------- 12:35 ----------

Java:

   1.
       
   2.
      package terminarz_new;
   3.
       
   4.
      import java.awt.*;
   5.
      import java.awt.event.*;
   6.
      import javax.swing.*;
   7.
      import javax.swing.event.*;
   8.
       
   9.
       
  10.
      public class Wyglad
  11.
      {
  12.
        public Wyglad ()
  13.
            {
  14.
              ramka5= new Ramka7();
  15.
              ramka5.setResizable(false);
  16.
             
  17.
            }
  18.
         public void zmienLocal(int wspX,int wspY)
  19.
          {
  20.
            int x =wspX;
  21.
            int y =wspY;
  22.
       
  23.
           ramka5.setLocation(x,y);
  24.
          }
  25.
       
  26.
        public void show()
  27.
            {
  28.
               ramka5.show();
  29.
            }
  30.
       
  31.
        public void hide()
  32.
             {
  33.
               ramka5.hide();
  34.
              }
  35.
       
  36.
         Ramka7 ramka5;
  37.
      }
  38.
       
  39.
       
  40.
      class Ramka7 extends PasekMenu
  41.
      {
  42.
          public Ramka7()
  43.
          {
  44.
             setTitle("Terminarz");
  45.
             Toolkit zestaw =Toolkit.getDefaultToolkit();
  46.
             Dimension rozmiarEkranu =zestaw.getScreenSize();
  47.
             int wysEkranu=rozmiarEkranu.height;
  48.
             int szerEkranu=rozmiarEkranu.width;
  49.
             setSize(szerEkranu/2,wysEkranu/2);
  50.
       
  51.
         }
  52.
       
  53.
      }
  54.
       
  55.