Je voudrais faire un JComboBox qui a des cases à cocher pour les éléments au lieu de texte. En outre, il devrait être possible de vérifier plusieurs éléments et d'extraire les éléments sélectionnés du composant. Dois-je créer un ComboBoxUI, ComboBoxEditor, ListCellRenderer, ComboPopUp personnalisé ou quelque chose de complètement différent? Existe-t-il un contrôle Java existant?Java - cases à cocher dans un JComboBox
Répondre
Cela a été assez facile à mettre en œuvre. Trouvé ici link text
/* * The following code is adapted from Java Forums - JCheckBox in JComboBox URL: http://forum.java.sun.com/thread.jspa?forumID=257&threadID=364705 Date of Access: July 28 2005 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
public class JComboCheckBox extends JComboBox {
public JComboCheckBox() { addStuff(); }
public JComboCheckBox(JCheckBox[] items) { super(items); addStuff(); }
public JComboCheckBox(Vector items) { super(items); addStuff(); }
public JComboCheckBox(ComboBoxModel aModel) { super(aModel); addStuff(); }
private void addStuff() {
setRenderer(new ComboBoxRenderer());
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) { itemSelected(); }
});
}
private void itemSelected() {
if (getSelectedItem() instanceof JCheckBox) {
JCheckBox jcb = (JCheckBox)getSelectedItem();
jcb.setSelected(!jcb.isSelected());
}
}
class ComboBoxRenderer implements ListCellRenderer {
private JLabel defaultLabel;
public ComboBoxRenderer() { setOpaque(true); }
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
if (value instanceof Component) {
Component c = (Component)value;
if (isSelected) {
c.setBackground(list.getSelectionBackground());
c.setForeground(list.getSelectionForeground());
} else {
c.setBackground(list.getBackground());
c.setForeground(list.getForeground());
}
return c;
} else {
if (defaultLabel==null) defaultLabel = new JLabel(value.toString());
else defaultLabel.setText(value.toString());
return defaultLabel;
}
}
}
}
Ce n'est pas ce que les boîtes combo sont "pour". Êtes-vous sûr de ne pas vouloir, disons, un JMenu avec JRadioButtonMenuItem
s?
Si voulez voulez vraiment continuer, alors vous utiliseriez un moteur de rendu personnalisé, comme vous suggested.
On nous a déjà donné cette même exigence innée. Nous nous sommes conformés à un tout nouveau composant. C'était essentiellement un JPanel
qui avait un champ de texte et un bouton fléché vers le bas. Il contenait un JList
qui utilisait un JCheckbox
-derrived ListCellRenderer
. Le JList
a été empaqueté dans un JPopupMenu
qui a été affiché sur des clics de souris.
Vous pouvez jeter un oeil à japura. C'est un composant personnalisé open source basé sur swing.
- 1. Cases à cocher Tristate en Java
- 2. jQuery Cases à cocher
- 3. Dropdown avec cases à cocher
- 4. Cases à cocher Django multiselect
- 5. Les cases à cocher s'affichent?
- 6. mysql et cases à cocher
- 7. Datagrid avec cases à cocher
- 8. cases à cocher dans les lignes générées
- 9. Cases à cocher dans les rails
- 10. ExtJS CheckboxSelectionModel crée deux cases à cocher?
- 11. Cases à cocher ASP.Net MVC Problème
- 12. Supprimer l'espace entre les cases à cocher
- 13. Pylônes/Formencode avec plusieurs cases à cocher
- 14. Sérialisation d'un tableau de cases à cocher
- 15. Cases à cocher sur les rails
- 16. validation des cases à cocher pour multiselection
- 17. cases à cocher ASP.net MVC (C#)
- 18. espacement étrange des cases à cocher étiquettes
- 19. manipulation des cases à cocher Jquery aide
- 20. désactiver toutes les cases à cocher
- 21. Zend Framework Décorateurs de cases à cocher
- 22. obtenir les noms des cases à cocher des gabarits
- 23. A ListView des cases à cocher dans PyQt
- 24. Editer des cases à cocher dans une interface graphique Matlab
- 25. Liste de cases à cocher remplir dynamiquement dans Asp.Net C#
- 26. HTML dans les cases à cocher liste de sélection
- 27. Problème avec les cases à cocher jquery handling dans IE8
- 28. Problèmes avec les cases à cocher à nouveau asp.net
- 29. Ajouter des cases à cocher à VB.NET WPF 3.5 TreeView
- 30. Obtenir/Définir les valeurs des cases à cocher et des cases d'option à l'aide du prototype
Je ne peux pas imaginer que quelqu'un souhaite modifier la case à cocher sélectionnée avec comboModel – kleopatra
J'ai utilisé votre exemple pour créer un exemple et je n'ai pas pu sélectionner de données à partir de la liste déroulante. par exemple. si le texte combo est Premier, deuxième, etc. \t Appuyez sur la touche "S" de l'utilisateur, \t La deuxième doit être en surbrillance/sélectionnée. Tout comme dans JComboBox normal. \t Y at-il un moyen de le faire comme dans l'une de mes applications, nous en avons besoin. – sridhar