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:
-
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. -
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.