[Java/Swing] dropdown qui ne droppe pas QUE down ?

dropdown qui ne droppe pas QUE down ? [Java/Swing] - Java - Programmation

Marsh Posté le 29-08-2002 à 17:06:54    

Yop,
 
Je voudrais faire une ComboBox, mais je voudrais que la liste, au lieu s'ouvre vers le bas, s'ouvre "au milieu", a l'endroit de l'élement selectionné actuellement.
(Au lieu de devoir descendre jusqu'en bas de la liste pour selectionner l'element suivant quand tu es deja sur l'avant dernier)
En gros, comme sur les dropdown des pages ouaibe des mac.
 
Possible?
(Independament d'un Look and Feel)
 
Si personne comprend je pourrais poster un chti dessin...
 


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 17:06:54   

Reply

Marsh Posté le 29-08-2002 à 17:15:26    

--greg-- a écrit a écrit :

Yop,
 
Je voudrais faire une ComboBox, mais je voudrais que la liste, au lieu s'ouvre vers le bas, s'ouvre "au milieu", a l'endroit de l'élement selectionné actuellement.
(Au lieu de devoir descendre jusqu'en bas de la liste pour selectionner l'element suivant quand tu es deja sur l'avant dernier)
En gros, comme sur les dropdown des pages ouaibe des mac.
 
Possible?
(Independament d'un Look and Feel)
 
Si personne comprend je pourrais poster un chti dessin...
 
 




tu voudrais que le popup s'affiche au dessus de la combo carément en fait, pour que l'élément dont tu parles soit sous la souris ?

Reply

Marsh Posté le 29-08-2002 à 17:17:27    

En AWT, on peut faire ça super facilement : tu met bête bouton, ou un textfield, et en cas de clic dessus, tu affiche un PopupMenu, à l'endroit qui va bien. (tu passes les coordonnées du menu par rapport à son parent à la méthode show(), donc, c'est tout con)
 
En Swing...je sais pas, mais en bidouillant avec les JPopupMenu, ça doit pas être sorcier.

Reply

Marsh Posté le 29-08-2002 à 17:18:44    

je l'avais dit que gfive ct l'expert :D


Message édité par darklord le 29-08-2002 à 17:18:54
Reply

Marsh Posté le 29-08-2002 à 17:18:48    

ben disons que j'ai quelque chose dans le genre avec un JPopupMenu. L'ennui c'est que c'est pas "user friendly", car ça ne ressemble à rien qu'un user lambda à l'habitude de cliquer...
see what i mean?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 17:23:43    

--greg-- a écrit a écrit :

ben disons que j'ai quelque chose dans le genre avec un JPopupMenu. L'ennui c'est que c'est pas "user friendly", car ça ne ressemble à rien qu'un user lambda à l'habitude de cliquer...
see what i mean?




Et ben tu crées une JWindow undecorated avec un ScrollPane vertical et une JList dedans.
Ca pourrait le faire non ! [:bobuse]

Reply

Marsh Posté le 29-08-2002 à 17:25:26    

DarkLord a écrit a écrit :

je l'avais dit que gfive ct l'expert :D




Vilain flatteur! :D
 
Sinon, ouais, je conçois que ça ressemble à rien, mais bon, ton machin, là, j'en ai rarement vu la queue d'un, en fait! :D
 
Mais bon, si tu me fais un piti dessin, ou un screenshot d'un truc approchant qui existe, je regarderai ça : une sorte de défi, quoi! :p

Reply

Marsh Posté le 29-08-2002 à 17:29:42    

--greg-- a écrit a écrit :

Yop,
 
Je voudrais faire une ComboBox, mais je voudrais que la liste, au lieu s'ouvre vers le bas, s'ouvre "au milieu", a l'endroit de l'élement selectionné actuellement.
(Au lieu de devoir descendre jusqu'en bas de la liste pour selectionner l'element suivant quand tu es deja sur l'avant dernier)
En gros, comme sur les dropdown des pages ouaibe des mac.
 
Possible?
(Independament d'un Look and Feel)
 
Si personne comprend je pourrais poster un chti dessin...




Ca ressemble à une DropDown classique mais avec un look&feel Motif, ça, si je ne me trompe pas...

Reply

Marsh Posté le 29-08-2002 à 17:34:57    

BifaceMcLeOD a écrit a écrit :

 
Ca ressemble à une DropDown classique mais avec un look&feel Motif, ça, si je ne me trompe pas...



ou Mac...
edit: non en fait, pas du tout comme le l'n'f Motif.


Message édité par --greg-- le 29-08-2002 à 17:38:02

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 17:42:07    

Ca fait super longtemps que je suis pas allé chez MacDo, mais bon, je savais pas qu'ils avaient mis des DropDown dans leurs sandouiches......A moins que vous parliez d'autre chose, en disant "Mac"?? :D

Reply

Marsh Posté le 29-08-2002 à 17:42:07   

Reply

Marsh Posté le 29-08-2002 à 17:42:47    

:o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 17:44:12    

Bon, mais t'as un screenshot, histoire d'éduquer les masses non-macophiles???

Reply

Marsh Posté le 29-08-2002 à 17:48:19    

gfive a écrit a écrit :

Bon, mais t'as un screenshot, histoire d'éduquer les masses non-macophiles???



je cherche, je cherche.


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 19:09:00    

et voilà:
 
http://membres.lycos.fr/gggrrrreeeggg/dropdown_mac.jpg
 
on le voit pas bien mais en dessous y'a la boiboite :) on voit un petit bout, en gris/bleu. Ca suffit pour vous montrer ou se déroule la liste quoi.
 
Oki?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 19:10:33    

ah punaise ct ca ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 29-08-2002 à 19:10:57    

DarkLord a écrit a écrit :

ah punaise ct ca ...



[:leg9]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 19:22:08    

--greg-- a écrit a écrit :

[:leg9]




 
 :na:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 29-08-2002 à 20:59:25    

Ben je pense donc que ma méthode est adaptée. Non ?

Reply

Marsh Posté le 29-08-2002 à 21:05:47    

bobuse a écrit a écrit :

Ben je pense donc que ma méthode est adaptée. Non ?



ha, scuse j'avais pas vu
mais la window elle va avancer à quoi?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 29-08-2002 à 21:10:40    

--greg-- a écrit a écrit :

ha, scuse j'avais pas vu
mais la window elle va avancer à quoi?




A faire ton popup

Reply

Marsh Posté le 29-08-2002 à 21:35:24    

euh mais jveux pas ouvrir une nvlle fenetre hein...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 30-08-2002 à 09:29:31    

ben non, mais une JWindow, tu peux la créer undecorated, ça te permet de faire un JPanel tout seul que t'en fais ce que tu veux après
Genre : (un composant que je m'étais cuisiné) http://perso.wanadoo.fr/duboud/batsim/images/IntChooser2.png  
Le curseur en dessous apparait au-dessus (à la même manière q'une combo) lorsque tu cliques sur le bouton qui est au-dessus.
 
spa clair ?
spa ske tuveux ?

Reply

Marsh Posté le 30-08-2002 à 10:30:43    

Ca te va, ça??
 
http://site.voila.fr/gfive/Select.jpg
 
 
Si oui, code là :  
 
 

Code :
  1. import javax.swing.*;
  2. import javax.swing.event.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class Select extends JTextField implements MouseListener, ActionListener {
  6.     private int index;
  7.     private int itemheight = -1;
  8.     private JPopupMenu menu;
  9.     public Select(int length) {
  10.         super(length);
  11.         setEditable(false);
  12.         addMouseListener(this);
  13.         menu = new JPopupMenu();
  14.     }
  15.     public void addItem(String item) {
  16.         JCheckBoxMenuItem jcbmi = new JCheckBoxMenuItem(item);
  17.         menu.add(jcbmi);
  18.         jcbmi.addActionListener(this);
  19.     }
  20.     public void select(String item) {
  21.         MenuElement[] me = menu.getSubElements();
  22.        
  23.         JCheckBoxMenuItem jcbmi;
  24.        
  25.         index = -1;
  26.         for (int i = 0; i < me.length; i++) {
  27.             jcbmi = (JCheckBoxMenuItem) me[i];
  28.             if (jcbmi.getText().equals(item)) {
  29.                 jcbmi.setState(true);
  30.                 index = i;
  31.                 System.out.println("Selecting "+item+" i = "+i);
  32.                 setText(item);
  33.             } else {
  34.                 jcbmi.setState(false);
  35.             }
  36.         }
  37.         repaint();
  38.     }
  39.     public void actionPerformed(ActionEvent e) {
  40.         select(((JCheckBoxMenuItem) e.getSource()).getText());
  41.     }
  42.     public void mouseClicked(MouseEvent e) {
  43.         MenuElement[] me = menu.getSubElements();
  44.         if (me.length > 0) {
  45.             if (itemheight <= 0) {
  46.                 JCheckBoxMenuItem jcbmi = (JCheckBoxMenuItem) me[0];
  47.                
  48.                 itemheight = jcbmi.getSize().height;
  49.             }
  50.            
  51.             int y = 0;
  52.             if (index != -1) {
  53.                 y = 0 - (index * itemheight);
  54.             }
  55.             System.out.println("Mouse Clicked! index = "+index+" y = "+y);
  56.             menu.show(this, 2, y);
  57.         } else {
  58.             System.out.println("Nothing to popup!" );
  59.         }
  60.     }
  61.     public void mouseEntered(MouseEvent e) {}
  62.    
  63.     public void mouseExited(MouseEvent e) {}
  64.        
  65.     public void mousePressed(MouseEvent e) {}
  66.    
  67.     public void mouseReleased(MouseEvent e) {}
  68.     public static void main(String[] args) {
  69.         Select select = new Select(10);
  70.         select.addItem("Pomme" );
  71.         select.addItem("Banane" );
  72.         select.addItem("Orange" );
  73.         select.addItem("Citron" );
  74.         select.addItem("P�che" );
  75.         select.addItem("Poire" );
  76.         JFrame frame = new JFrame("Test" );
  77.         frame.getContentPane().setLayout(new FlowLayout());
  78.         frame.getContentPane().add(select);
  79.        
  80.         frame.pack();
  81.         frame.show();
  82.     }
  83. }

 
 
J'ai vraiment rien à glander, ce matin... :D


Message édité par gfive le 30-08-2002 à 10:59:11
Reply

Marsh Posté le 30-08-2002 à 10:34:05    

j'en connais un qui va être content :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:36:29    

Mais dis, Ô mon Darklord (je suis affectueux, c'est le deuxième effet ouikende) comment qu'on met une image dans ce forum à la mord moi le noeud??

Reply

Marsh Posté le 30-08-2002 à 10:38:48    

(pour les images on les place ailleurs que chez chez.com  :D )

Reply

Marsh Posté le 30-08-2002 à 10:39:57    

tu postes ton url. Ensuite tu la sélectionne puis tu cliques sur l'image avec l'oeil  
 
sinon c'est un truc du genre
 
[img ]http://www.site.com/img0.gif[/img ]
 
sans les espaces avant ]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:40:09    

Taureau a écrit a écrit :

(pour les images on les place ailleurs que chez chez.com  :D )




 
par exemple :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:45:32    

Bon, d'accord, faut que je me trouve un espace de ftp, alors! :D

Reply

Marsh Posté le 30-08-2002 à 10:49:54    

DarkLord a écrit a écrit :

tu postes ton url. Ensuite tu la sélectionne puis tu cliques sur l'image avec l'oeil  
 




Ouah 'tain, ça doit faire mal !! :ouch:  
 
moi je le fais avec l'index, c'est plus pratique :D  
 
:dsl:

Reply

Marsh Posté le 30-08-2002 à 10:50:42    

:sarcastic:  
 
 [:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:51:41    

DarkLord a écrit a écrit :

tu postes ton url
sans les espaces avant ]




et il faut un espace (ou saut de ligne) avant et après le tout ! (je crois :heink: )

Reply

Marsh Posté le 30-08-2002 à 10:54:29    

euh non, je crois pas ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:59:40    

Yeeeah!!! :D Ca marche, voila rulaize grave! :p

Reply

Marsh Posté le 30-08-2002 à 11:03:20    

gfive tu me donnes des cours particuliers de création de GUI ?
 
[:prosterne] [:prosterne] [:prosterne]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 11:03:38    

gfive a écrit a écrit :

Yeeeah!!! :D Ca marche, voila rulaize grave! :p




po mal !
top fanzzi le LnF ;)
 
EDIT : je sui complètement bourré !!!!
aucun LnF, c'est moi qui en ait un, du coup, je suis plus habitué au LnF métal :ouch:  [:nowad]


Message édité par bobuse le 30-08-2002 à 11:05:24
Reply

Marsh Posté le 30-08-2002 à 11:04:44    

[:prosterne] [:prosterne] [:prosterne]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 11:08:00    

c'est un JTextField :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 11:08:21    

pff il a editait la salo


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 11:09:39    

Heu ... il manque le :

Code :
  1. frmae.addWindowListener(new WindowAdapter() {
  2.                                    public void windowClosing(WindowEvent e) {
  3.                                        System.exit(0);
  4.                                    }
  5.                                }
  6.                               );

:o  
 
J'ai po trouvé mieux !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed