OVH Cloud OVH Cloud

un solution simple ?

5 réponses
Avatar
remy
bonsoir

je voudrais si c'est possible trouver le moyen de recupere
le menu sur le quelle l'on a clik sans toucher a la class JMenuItem

je suis preneur de toute les idee meme tordu


ps :je ne veut pas cree une class du type


public class MyJMenu extends JMenuItem
...

bonsoir


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

public class Ihm1
{



public static void main(String args[])
{
MaFenetre f=new MaFenetre("coucou");

}
}
class MyJMenuBar extends JMenuBar
{


public JMenu add(JMenu jm)
{
JSeparator s=new JSeparator();
jm.add(s);
for(int j=0;j<5;j++)
{
JMenuItem item = new JMenuItem("...");
jm.add(item);
}

return super.add(jm);
}


}


class MaFenetre extends JFrame
{

MaFenetre(String titre)
{
super(titre);
MyJMenuBar mb = new MyJMenuBar();
//JMenuBar mb = new JMenuBar();
mb.add(getMenu());
mb.add(getMenu());
setJMenuBar(mb);
this.setSize(getToolkit().getScreenSize());
this.setVisible(true);
}
JMenu getMenu()
{


JMenuItem item;
JMenu item0,item1,item2,item3;
JMenu fileMenu= new JMenu("test");
item0 = new JMenu("niveaux0");
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
fileMenu.add(item);
}

for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item0.add(item);
}
item1 = new JMenu("niveaux1");
item0.add(item1);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item1.add(item);
}
item2 = new JMenu("niveaux2");
item1.add(item2);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item2.add(item);
}
item3 = new JMenu("niveaux3");
item2.add(item3);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item3.add(item);
}
fileMenu.add(item0);

return fileMenu;

}

}

5 réponses

Avatar
Isammoc
Une solution à la volée:

<code fichier="Exemple.java">

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

public class Exemple {

public static void main(String[] args) {
// création de la fenêtre d'essai.
JFrame jf = new JFrame("Essai");

// création de la barre des menus.
JMenuBar jmb = new JMenuBar();

// on affecte la barre de menus à la fenêtre.
jf.setJMenuBar(jmb);

// création de deux options.
JMenuItem jmi1 = new JMenuItem();
JMenuItem jmi2 = new JMenuItem();

// ajout de ces options à la barre de menus.
jmb.add(jmi1);
jmb.add(jmi2);

// on leur affecte une action
jmi1.setAction(new AbstractAction("machin") {
public void actionPerformed(ActionEvent ae) {

System.out.println("C'est le machin");
}
});
jmi2.setAction(new AbstractAction("truc") {
public void actionPerformed(ActionEvent ae) {
System.out.println("C'est le truc");
}
});

// on affiche correctement la fenêtre.
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300,500);
jf.show();
}
}

</code>


J'espère t'avoir aidé !

--
Isammoc
Avatar
remy
On Fri, 15 Oct 2004 23:07:15 +0200, Isammoc wrote:

Une solution à la volée:

<code fichier="Exemple.java">

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

public class Exemple {

public static void main(String[] args) {
// création de la fenêtre d'essai.
JFrame jf = new JFrame("Essai");

// création de la barre des menus.
JMenuBar jmb = new JMenuBar();

// on affecte la barre de menus à la fenêtre. jf.setJMenuBar(jmb);

// création de deux options.
JMenuItem jmi1 = new JMenuItem();
JMenuItem jmi2 = new JMenuItem();

// ajout de ces options à la barre de menus. jmb.add(jmi1);
jmb.add(jmi2);

// on leur affecte une action
jmi1.setAction(new AbstractAction("machin") {
public void actionPerformed(ActionEvent ae) {

System.out.println("C'est le machin");
}
});


pas vraiment il peut deja l'utiliser

merci


jmi2.setAction(new AbstractAction("truc") {
public void actionPerformed(ActionEvent ae) {
System.out.println("C'est le truc");
}
});

// on affiche correctement la fenêtre.
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300,500);
jf.show();
}
}

</code>


J'espère t'avoir aidé !



Avatar
remy
bonjour

ci un exper passe par la pourquoi cela ne fct pas

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


public class Ihm1
{



public static void main(String args[])
{



MaFenetre f=new MaFenetre("coucou");

}
}

class MyJMenuBar extends JMenuBar
{
MyJMenuBar()
{
this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}

public JMenu add(JMenu jm)
{

JSeparator s=new JSeparator();
jm.add(s);
for(int j=0;j<5;j++)
{
JMenuItem item = new JMenuItem("...");
jm.add(item);
}

return super.add(jm);
}
public void processMouseMotionEvent(MouseEvent e)
{
System.out.println("****************");
}

}

class MaFenetre extends JFrame
{

MaFenetre(String titre)
{
super(titre);
MyJMenuBar mb = new MyJMenuBar();
//JMenuBar mb = new JMenuBar();
mb.add(getMenu());
mb.add(getMenu());
setJMenuBar(mb);
this.setSize(getToolkit().getScreenSize());
this.setVisible(true);
}
JMenu getMenu()
{


JMenuItem item;
JMenu item0,item1,item2,item3;
JMenu fileMenu= new JMenu("test");
item0 = new JMenu("niveaux0");
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
fileMenu.add(item);
}

for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item0.add(item);
}
item1 = new JMenu("niveaux1");
item0.add(item1);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item1.add(item);
}
item2 = new JMenu("niveaux2");
item1.add(item2);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item2.add(item);
}
item3 = new JMenu("niveaux3");
item2.add(item3);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item3.add(item);
}
fileMenu.add(item0);

return fileMenu;

}

}
Avatar
Isammoc
bonjour

ci un exper passe par la pourquoi cela ne fct pas


Quel est ton but avec ceci?

--
Isammoc

Avatar
remy
On Sat, 16 Oct 2004 18:09:53 +0200, Isammoc wrote:

bonjour

ci un exper passe par la pourquoi cela ne fct pas


Quel est ton but avec ceci?


merci

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


public class Ihm1
{



public static void main(String args[])
{



MaFenetre f=new MaFenetre("coucou");

}

}

class MyJMenuBar extends JMenuBar
{
JMenuItem item0,item1,item2;
JMenu jm;


public JMenu add(JMenu jm)
{


JSeparator s=new JSeparator();
jm.add(s);
item0 = new JMenuItem("...");
jm.add(item0);

return super.add(jm);
}

public void menuSelectionChanged(boolean isIncluded)
{

JMenuItem item;

AWTEvent e=get().getCurrentEvent();
if(e.getSource()instanceof JMenu)
{
jm=(JMenu)e.getSource();
return;
}
if(e.getSource()instanceof JMenuItem)
{
item=(JMenuItem)e.getSource();
jm.remove(jm.getItemCount()-1);
jm.insert(item,jm.getItemCount());



}
}

public EventQueue get()
{
EventQueue retValue;
try {
retValue = Toolkit.getDefaultToolkit().getSystemEventQueue();
}
catch (SecurityException se) {
retValue = null;
}
return retValue;
}

}

class MaFenetre extends JFrame
{

MaFenetre(String titre)
{
super(titre);
MyJMenuBar mb = new MyJMenuBar();
//JMenuBar mb = new JMenuBar();
mb.add(getMenu());
mb.add(getMenu());
setJMenuBar(mb);
this.setSize(getToolkit().getScreenSize());
this.setVisible(true);
}
JMenu getMenu()
{


JMenuItem item;
JMenu item0,item1,item2,item3;
JMenu fileMenu= new JMenu("test");
item0 = new JMenu("niveaux0");
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
fileMenu.add(item);
}

for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item0.add(item);
}
item1 = new JMenu("niveaux1");
item0.add(item1);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item1.add(item);
}
item2 = new JMenu("niveaux2");
item1.add(item2);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item2.add(item);
}
item3 = new JMenu("niveaux3");
item2.add(item3);
for(int j=0;j<5;j++)
{
item = new JMenuItem("test"+j);
item3.add(item);
}
fileMenu.add(item0);

return fileMenu;

}

}