Bonjour a tous.
J'ai commencé a codé un editeur de figures geometriques.
Au depart j'avais tout fait dans une seule classe, celle qui contient le main et ca marchait.
J'ai voulu decouper le probleme en differentes classes:
classe application qui construit et affiche l'interface graphique:
la classe MenuItemActionListener:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 class Application { public Application() { JFrame frame = new JFrame("Java Paint"); JPanel panel = new JPanel(); frame.getContentPane().add(panel, "Center"); ActionListener listener = new MenuItemActionListener(panel); JMenu fichier = new JMenu("Fichier"); fichier.setMnemonic('F'); fichier.add(menuItem("Charger une figure", listener, "figure chargee", 'C', KeyEvent.VK_O)); fichier.add(menuItem("Enregistrer une figure", listener, "figure enregistree", 'E', KeyEvent.VK_S)); JMenu edition = new JMenu("Edition"); edition.setMnemonic('E'); JMenu sousMenu = new JMenu("Créer un objet"); sousMenu.add(menuItem("Segment", listener, "segment", 0, 0)); sousMenu.add(menuItem("Droite", listener, "droite", 0, 0)); edition.add(sousMenu); edition.add(menuItem("Historique des objets créés", listener, "historique", 'H', KeyEvent.VK_H)); edition.add(menuItem("Supprimer un objet de l'historique", listener, "supp objet histo", 'S', KeyEvent.VK_D)); edition.add(menuItem("Supprimer le dernier objet créé", listener, "supp dernier objet", 'D', KeyEvent.VK_L)); JMenu affichage = new JMenu("Affichage"); affichage.setMnemonic('A'); affichage.add(menuItem("Zoomer", listener, "zoom", 'Z',0)); affichage.add(menuItem("Dezoomer", listener, "dezoom", 'D',0)); JMenuBar menubar = new JMenuBar(); menubar.add(fichier); menubar.add(edition); menubar.add(affichage); frame.setJMenuBar(menubar); frame.setSize(450, 300); frame.setVisible(true); } }
et la classe de test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 class MenuItemActionListener implements ActionListener { Component parent; public MenuItemActionListener(Component parent) { this.parent = parent; } public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); if (item.getText() == "Segment") JOptionPane.showMessageDialog(parent,"je desseine un segment"); else { String cmd = item.getActionCommand(); JOptionPane.showMessageDialog(parent, cmd + " was selected."); } } public static JMenuItem menuItem(String label, ActionListener listener, String command, int mnemonic, int acceleratorKey) { JMenuItem item = new JMenuItem(label); item.addActionListener(listener); item.setActionCommand(command); if (mnemonic != 0) item.setMnemonic((char) mnemonic); if (acceleratorKey != 0) item.setAccelerator(KeyStroke.getKeyStroke(acceleratorKey, java.awt.Event.CTRL_MASK)); return item; } // A convenience method for creating radio button menu items public static JMenuItem radioItem(String label, ActionListener listener, String command, ButtonGroup mutExGroup) { JMenuItem item = new JRadioButtonMenuItem(label); item.addActionListener(listener); item.setActionCommand(command); mutExGroup.add(item); return item; } }
Comme cela ca ne compile pas (normal), le probleme vient de la classe Application je pense, quand je la fais hériter de MenuItemActionListener cela me met une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Test { public static void main(String[] args) { Application projet = new Application(); } }
Je ne sais donc pas comment faire pour que ma classe application reconnaisse les methodes de MenuItemActionListener sans la faire heriter.Application.java:7: cannot find symbol
symbol : constructor MenuItemActionListener()
location: class MenuItemActionListener
public Application() {
^
1 error
merci d'avance
PS: je suis debutant, ca doit etre un truc tout bete mais je vois pas
Partager