Réalisation d'une jmenubar

Résolu/Fermé
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Bonsoir tout le monde

J'essais de mettre une barre de menu dans mon application.

voici les code des deux class.

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;



public class Juckbox {


public final static int longu = 800;
 
public final static int larg = 700;





 
public static void main(String[] args)
{





 JFrame F = new JFrame("Juckbox");



  F.setSize(longu,larg);
  F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  F.setLayout(new GridBagLayout());
  F.setBackground(Color.darkGray);
  F.getContentPane().add(new Elementjucbox());
  F.setVisible(true);



}



}





class composantes

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;

public class Elementjucbox extends JPanel implements ActionListener



{
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;




public Elementjucbox()
{



 GridBagLayout gridbag = new GridBagLayout();
 GridBagConstraints constraints = new GridBagConstraints();
 this.setLayout(gridbag);




 



  menuBar = new JMenuBar();
  menu = new JMenu("Fichier");
  menu.setMnemonic(KeyEvent.VK_A);
  menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
  this.menuBar.add(menu);
  

  menuItem = new JMenuItem("Charger un audio",KeyEvent.VK_T);



 this.menu.add(menuItem);




 this.setJMenuBar(menuBar);




}

}






Je n'arrive pas à afficher la barre de menu.

J'ai essayer de faire  F.setJMenuBar(menuBar); dans la class principale, ca ne fonctionne pas. 

Là je n'aide pas d'idée.

Voici le tuto.

http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

Pouvez vous m'aider.

Merci

Cordialement

A bientôt

13 réponses

Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonjour


Maintenant pour moi c'est confirmé, java n'accepte pas les fichier .ico.


Merci

Cordialement.


A bientôt
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
Salut,

tiens voici un code le plus simple possible mais fonctionnelle, avec un JMenuBar à toi de comparer avec ce que tu as fais afin de voir ce qui ne va pas :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Test extends JFrame{
    private static final long    serialVersionUID    = 1802199483736051124L;

    public Test(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 300);
        setLocationRelativeTo(null);
       
        setJMenuBar(new MyJMenuBar());
       
        //juste pour le fun
        JPanel p = new JPanel();
        p.add(new JButton("Un bouton"));
        setContentPane(p);
    }

    public static void main(String[] args) {
        new Test().setVisible(true);
    }

}
class MyJMenuBar extends JMenuBar{
    private static final long    serialVersionUID    = -3611241189127829755L;

    MyJMenuBar(){
        JMenu menuFile = new JMenu("File");
        menuFile.setMnemonic('f');
        JMenuItem itemQuit = new JMenuItem("Quit");
        itemQuit.setMnemonic('q');
        itemQuit.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }
        });
        menuFile.add(itemQuit);
        add(menuFile);
    }
}

La seule chose super importante c'est que tu dois passer par la methode setJMenuBar pour rattacher la barre à la fenetre
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonjour tout le monde


Moi, pour le développement java j'utilise une methode qui sépare le projet en plusieurs class.

je vais essayer de creer un class pour la barre de menu, et l'inserer dans la class principal..

Voici les modification que j'ai fais.

Class principal.

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;



public class Juckbox {



 


public final static int longu = 800;
 
public final static int larg = 700;


 
public static void main(String[] args)
{





 JFrame F = new JFrame("Juckbox");



  F.setSize(longu,larg);
  F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  F.setLayout(new GridBagLayout());
  F.setBackground(Color.darkGray);
  F.getContentPane().add(new Elementjucbox());
  F.setJMenuBar(new Barremenu());
  F.setVisible(true);



}



}





La class Barremenu

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Barremenu extends JMenuBar {



JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;



public Barremenu() {





 menuBar = new JMenuBar();
 menu = new JMenu("Fichier");
 menu.setMnemonic(KeyEvent.VK_A);
 menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
 menuBar.add(menu);
  



 menuItem = new JMenuItem("Charger un audio",KeyEvent.VK_T);



 menu.add(menuItem);
}



}




Il n' y a plus d'erreur de compilation, mai la barre de menu ne s'affiche pas.

Que dois je faire.

Merci


Cordialement


A bientôt
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
Salut,

bon avant toute jose les règle de nomage en java sont :
pour les contantes (final static) MA_CONSTANTE_A_MOI
pour les variables static ou non maVariableAMoi
pour les methode static, final, ou simple maMethodeAMoi
pour les classes static final ou simple MaClasseAMoi
pour les packages mon_package.a_moi

Sinon pour ton problème il es entièrement logique dans ta classe tu hérite Barremenu de JMenuBar mais tu nous creer quand meme un JMenuBar dedans ce qui n'est pas correcte voici lacorrection

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Barremenu extends JMenuBar {//JMenuBar menuBar;//PAS BIEN
JMenu menu;
JMenuItem menuItem;

public Barremenu() {

  //menuBar = new JMenuBar();//PAS BIEN
 menu = new JMenu("Fichier");
 menu.setMnemonic(KeyEvent.VK_A);
 menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
  //menuBar.add(menu);PAS BIEN

add(menu);//BIEN
  

 menuItem = new JMenuItem("Charger un audio",KeyEvent.VK_T);

 menu.add(menuItem);
}

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonsoir


Ca fonctionne!


Deux derniere questions.

1- Est il possible de mêttre la barr de menu en couleur.
2-Je souhaiterais mêttre des icon dans certaine item de la barre de menu, comment faire?

Merci.


Cordialement


A bientôt
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
Salut,

1 - oui c'est possible avec setBackground mais pour modifier les couleurs de selections il te faudra modifier les propriete de la jvm pour ne pas te prendre la tete ou si tu veux jouer les hard il te faut recreer les UI (soit le look and feel)

public static void main(String[] args) {
        Enumeration<Object> newKeys = UIManager.getDefaults().keys();
        while (newKeys.hasMoreElements()) {
            Object key = newKeys.nextElement();
            Object value = UIManager.getDefaults().get(key);
            System.out.println(key + "\t = \t" + value);
        }
    }

le bout de code si dessus permet d'obtenir la liste complete des propriété des différents objets graphique pour modifier  prend la clee qui t'interesse et tu fais exemple :
UIManager.put("Menu.selectionBackground", Color.BLUE);
updateUI();

2 - pour l'image tu fais exemple :
menuItem = new JMenuItem("Charger un audio", KeyEvent.VK_T);
menuItem.setIcon(new ImageIcon("icon.png"));

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Re

Petite question concernant les images, est ce que java prend en charge les .Icon?

Merci

A++
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
Salut,

je ne sais pas mais tu seras vite fixé en faisant le teste

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
re

l'icon ne s'affiche pas

A+
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
c'est que ca ne doit pas fonctionner avec les .ico

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
re

J'ai essayé de trouver des infos sur les images dans la javacdoc, mai j'ai du mal à trouver;

je me perd dans le site de sun.

a+
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
Salut,

tiens :

http://forum.java.sun.com/thread.jspa?threadID=644574

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
donc les extention .ico ne passe pas.

A+