Je réconforte Internet pour cette réponse. J'ai une simple jlist avec des objets à l'intérieur. Lorsque je cliquez avec le bouton droit de la souris, je veux un menu sur la fenêtre contextuelle qui dit "Utiliser, déposer, annuler" ou quelque chose de cette nature. Cependant, je suis exclu.
Le code ci-dessous produira une simple jlist avec quelques articles à l'intérieur. J'ai essayé d'ajouter un clic droit dans le code mais cela ne fonctionne pas. Aide? P>
Voici ce que j'ai jusqu'à présent: p>
3 Réponses :
Je ne sais pas ce que tu veux dire. Voici un code qui semble fonctionner comme vous spécifiez, mais en dehors de la prise de tout nombre de déclarations redondantes ou buggy, c'est à peu près ce que vous avez posté.
java.awt.event.MouseEvent[MOUSE_PRESSED,(31,22),absolute(39,72),button=3,modifiers=Meta+Button3,extModifiers=Button3,clickCount=1] on javax.swing.JList[,0,0,200x200,alignmentX=0.0,alignmentY=0.0,border=,flags=50331944,maximumSize=,minimumSize=,preferredSize=,fixedCellHeight=-1,fixedCellWidth=-1,horizontalScrollIncrement=-1,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],visibleRowCount=8,layoutOrientation=0] Row: 1 java.awt.event.MouseEvent[MOUSE_PRESSED,(29,39),absolute(37,89),button=3,modifiers=Meta+Button3,extModifiers=Button3,clickCount=1] on javax.swing.JList[,0,0,200x200,alignmentX=0.0,alignmentY=0.0,border=,flags=50331944,maximumSize=,minimumSize=,preferredSize=,fixedCellHeight=-1,fixedCellWidth=-1,horizontalScrollIncrement=-1,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],visibleRowCount=8,layoutOrientation=0] Row: 2 java.awt.event.MouseEvent[MOUSE_PRESSED,(36,65),absolute(468,192),button=3,modifiers=Meta+Button3,extModifiers=Button3,clickCount=1] on javax.swing.JList[,0,0,200x200,alignmentX=0.0,alignmentY=0.0,border=,flags=50331944,maximumSize=,minimumSize=,preferredSize=,fixedCellHeight=-1,fixedCellWidth=-1,horizontalScrollIncrement=-1,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],visibleRowCount=8,layoutOrientation=0] Row: 3 java.awt.event.MouseEvent[MOUSE_PRESSED,(45,11),absolute(477,138),button=3,modifiers=Meta+Button3,extModifiers=Button3,clickCount=1] on javax.swing.JList[,0,0,200x200,alignmentX=0.0,alignmentY=0.0,border=,flags=50331944,maximumSize=,minimumSize=,preferredSize=,fixedCellHeight=-1,fixedCellWidth=-1,horizontalScrollIncrement=-1,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],visibleRowCount=8,layoutOrientation=0] Row: 0 Tool completed successfully
Désolé pour tous mes non-sens. C'est juste comment j'ai été enseigné. (classe de lycée)
L'une des erreurs typiques peut être d'appeler jpopupmenu.setvisionVisible (true) code> et attendez-vous quelque chose à faire. Ce composant nécessite une méthode différente pour l'amener. Réécrivez votre auditeur de souris le long des lignes:
listbox.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
JPopupMenu menu = new JPopupMenu();
JMenuItem item = new JMenuItem("Say hello");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(inv.this, "Hello "
+ listbox.getSelectedValue());
}
});
menu.add(item);
menu.show(inv.this, 5, listbox.getCellBounds(
listbox.getSelectedIndex() + 1,
listbox.getSelectedIndex() + 1).y);
}
}
});
Pas sur SE Répondre par @KLEOPATRA, la logique est la même, JOPTIONPANE doit être retardée dans Invokelater (pas important)
Non, comme la méthode de wrapper invoquate n'est requise que lorsque vous appelez une méthode sur l'objet Swing du fil non pivotant. Dans notre cas, AddActionListener sera déjà appelé dans le fil pivotant.
Ce code jette une exception lorsque vous essayez de sélectionner un menu sur le dernier élément de la liste. listbox.getselectedex () + 1 Dans ce cas fait référence à un élément de liste inexistant.
Basé dans le précédent aux réponses, le code ci-dessous serait sélectionner immédiatement l'élément STRY> (sur clic droit) et afficher la fenêtre contextuelle à côté du clic de la souris. Il existe une section commentée qui montre une manière possible d'éliminer l'élément; Il suppose l'existence d'une arraylist code> (appelé array_list code>) contenant une copie des éléments sur le
jlist code>. Il a utilisé la méthode
to_array code> afin d'actualiser la jlist
code>. Il devrait y avoir une manière plus efficace, mais si votre liste est courte, elle devrait suffire. P> P>