Bonjour, j'aimerai inclure une MenuBar (pas une JMenuBar) dans autre chose qu'une (J)Frame, l'idéal serait dans un JPanel. Est-ce possible? Que fauut t'il utiliser?
Merci ;-)
Bonjour, j'aimerai inclure une MenuBar (pas une JMenuBar) dans autre chose qu'une (J)Frame, l'idéal serait dans un JPanel. Est-ce possible? Que fauut t'il utiliser?
Merci ;-)
Tu devrais plutôt regarder du coté de la JToolBar
le probleme c'est que les composant menu d'AWT ne sont pas des Component mais des MenuComponent.
dans awt.Panel tu a juste une methode pour ajouter des Component.
sinon pour swing tu fais ce que tu veux.
bbclone, je le sais bien justemen et c'est là le problème...
wichtounet, la JToolBar peut m'aider pour ajouter une MenuBar comme composant graphique dans un autre composant graphique a part la (J)Frame ?
si tu veut mon avis, je pense pas :-))
mais je comprent pas pourquoi tu veux ajouter un awt.MenuBar a un swing.JPanel. swing.JMenuBar serait quand meme plus logique.
Je sais bien, seulement, je fait une fenetre dérivant de JFrame avec setUndecorated(true); Et donc j'obtient un carré dessiné a l'écran. Et je lui ajoute toutes les fonctions d'une JFrame normal. J'ai tout fait, il ne me manque plus que la MenuBar...
Salut !
Justement si tu fais une Frame qui hérite de JFrame je ne vois plus le problème, tu n'as plus qu'à faire un setJMenuBar pour mettre ta barre de menu en haut. En quoi cette solution ne te convient pas ?
Simplement parce que tout en haut de la fenêtre, il y a une barre bleu avec des bouton pour iconifier, minimiser/maximiser et fermer. Cette barre je l'ai reproduite dans ma fenetre. Mais lorsque que je fait comme tu l'as dit : setMenuBar(); cette MenuBar se trouve au-dessus de ma barre bleu, ce qui n'est pas normal... Voila
je vois toujours pas.
que la fenetre est undecorated ou non ca change rien.
si tu ajoute un JMenuBar a un JPanel ca marche.
regarde
mais si tu essaye avec des awt.MenuBar awt.Menu et awt.MenuItem ca n'ira pas parce que c'est pas des Component!
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.AbstractButton; /** * @author bebe */ public class UndecoratedFrameWithMenu extends JFrame implements ActionListener { public UndecoratedFrameWithMenu() { setSize(400, 300); setUndecorated(true); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(getParent()); JPanel menuPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); menuPanel.setBorder(BorderFactory.createLineBorder(Color.RED)); JMenuBar myMenuBar = new JMenuBar(); JMenu menu = new JMenu("My first menu"); JMenuItem menuItem = new JMenuItem("Menu Item 1"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Menu Item 2"); menuItem.addActionListener(this); menu.add(menuItem); myMenuBar.add(menu); menu = new JMenu("My Second menu"); menuItem = new JMenuItem("Menu Item 3"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Menu Item 4"); menuItem.addActionListener(this); menu.add(menuItem); myMenuBar.add(menu); menuPanel.add(myMenuBar); JPanel contentPanel = new JPanel(); JButton myButton = new JButton("exit"); myButton.addActionListener(this); contentPanel.add(myButton); add(menuPanel, BorderLayout.PAGE_START); add(contentPanel, BorderLayout.CENTER); } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(this, ((AbstractButton) e.getSource()).getText()); System.exit(0); } public static void main(String... args) { new UndecoratedFrameWithMenu().setVisible(true); } }
en plus tu dit que tu herite de JFrame, je comprend pas le pourquoi d'un awt.MenuBar
y'a un truc que j'arrive pas a comprendre dans qu'est ce que tu veut faire
j'avait pas vu ton autre message
en fait tu dois pas faire un setJMenuBar mais un add tout simplement
regarde le code que j'ai poster juste avant
myMenuBar est une JMenuBar, il me faut une MenuBar!!!
si tu utilise JFrame pourquoi tu utilise MenuBar?
c'est pas coherent :
Parce que je veux que quiconque utilise ma Fenetre puisse utiliser toutes les methodes d'une JFrame. Comme elle dérive de JFrame, cela fonctionne mais cependant la MenuBar se place au-dessus de ma barre bleue. Ce que je ne veux pas.........
la courte version:
pour mettre un java.awt.MenuBar a une JFrame tu utilise setMenuBar.
si tu a une fenetre setUndecorated(true) et tu gere toi meme les petite case pour agrandir reduire fermer.. et que tu les ajoute d'une maniere ou d'une autre au ContentPane tu va avoir un probleme avec ton menu (qui s'affiche lui dans le JRootPane) mais...
Dans ce cas il faut faire de la delegation plutot que de l'heritage.Envoyé par Belegkarnil
Ou alors faire que la classe ne soit pas publique.
Je ne comprends toujours pas pourquoi tu veux utiliser une MenuBar et pas une JMenuBar. Bref, pourquoi ne fais-tu pas simplement en sorte que ta barre titre (ta barre bleue) soit placee au dessus de la JMenuBar ? Tu peux regarder le code source du look and feel Metal pour t'inspirer.
Ou puis-je trouver le code source du look ande feed metal?
... Dans le fichier src.zip qui se trouve dans le dossier du JDK.
Ok, je vais mettre résolu et j'essayerai plus tard. Si j'y arrive, je mettrai ma solution ici. Meri a vous tous pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager