[ _owl_ @ 29.07.2004. 20:15 ] @
Napravio sam dve klase koje treba da predstavljaju deo korisnickog GUI-a. Jedna klasa je zaduzena za iscrtavanje glavnog prozora (ova klasa takodje sadrzi i jedan JPanel objekat), dok druga treba da predstavlja odredjeni modul. U drugoj klasi se nalazi i JMeni objekat (svaki modul ima svoj meni), kao i JPanel (svaki modul u njega stavlja svoj korisnicki interfejs). Pri izboru neke od stavki iz menija trebalo bi da JPanel iz prve klase pokazuje JPanel iz druge klase (metode operation1Performed() i operation2Performed()). Svaka pomoc je dobrodosla. Zanimame i da li je ovakav nacin pisanja klasa za GUI ok?? Code: import javax.swing.*; import java.awt.event.*; public class TestGUI { public static void main(String args[]) { Cordinator c=new Cordinator(); Modul m=new Modul(c); c.showFrame(); } } interface GUIModul { } class Modul implements GUIModul { private JMenu menu; private Cordinator cordinator; private String name="Modul 1"; public Modul(Cordinator c) { cordinator=c; menu=new JMenu(name); JMenuItem operation1=new JMenuItem("Operation1"); operation1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { operation1Performed(); } } ); menu.add(operation1); JMenuItem operation2=new JMenuItem("Operation2"); operation2.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { operation2Performed(); } } ); menu.add(operation2); c.addMenu(menu); } public void operation1Performed() { System.out.println("operation1"); JPanel panel=new JPanel(); JLabel label=new JLabel("Operation1 performed"); panel.add(label); //cordinator.setPanel(panel); cordinator.getFrame().getContentPane().add(panel); cordinator.getFrame().repaint(); } public void operation2Performed() { System.out.println("operation2"); JPanel panel=new JPanel(); JLabel label=new JLabel("Operation2 performed"); panel.add(label); //cordinator.setPanel(panel); cordinator.getFrame().getContentPane().add(panel); cordinator.getFrame().repaint(); } } class Cordinator { private JFrame frame; private JMenuBar menuBar; private JPanel panel; public Cordinator() { frame=new JFrame("TestMenu"); panel=new JPanel(); menuBar=new JMenuBar(); frame.setJMenuBar(menuBar); frame.getContentPane().add(getDefaultPanel()); } public JPanel getPanel() { return panel; } public void setPanel(JPanel p) { panel=p; } public JPanel getDefaultPanel() { JLabel label=new JLabel("Neki tekst"); getPanel().add(label); return getPanel(); } public JFrame getFrame() { return frame; } public void showFrame() { frame.setSize(400, 300); frame.setVisible(true); } public void addMenu(JMenu menu) { menuBar.add(menu); } } |