La JComboBox
●boîte déroulante qui combine une zone de texte et une liste
●utilise un ComboBoxModel
●on peut sélectionner un élément
●on est prévenu de la sélection par un ActionListener:
combo1.addActionListener(newActionListener() {
@Override
public voidactionPerformed(ActionEvent e) {
String s=(String)combo1.getSelectedItem();
if(s!=null) {
noteLabel.setText(s);
}
}
});
Un ComboBoxModel
● pour ajouter un élément, sans doublon, et à la bonne place, on va écrire notre propre modèle:
/* We extend AbstractListModel in order to have the fire… methods */
public class MyComboModel extends AbstractListModel implements MutableComboBoxModel {
private String selectedItem;
private ArrayList<String> elements;
boolean ascending=true;
public MyComboModel(String… items) {
elements=new ArrayList<String>();
for (String s:items) {
addElement(s);
}
}
Le JSlider
● curseur à déplacer sur une barre, défini par un minimum, un maximum et une valeur courante, tous entiers
● utilise un BoundedRangeModel
● utilise un ChangeListener pour prévenir qu’une de ces valeurs a changé
● peut afficher ou non des encoches, grandes et petites, ainsi que des labels, personnalisés ou non
Le JSlider
●exemple de labels personnalisés:
private staticJLabel makeLabel(String string) {
JLabel l=newJLabel(string);
l.setOpaque(true);
l.setForeground(Color.RED);
l.setBackground(Color.GREEN);
returnl;
}
finalHashtable<Integer,JComponent> customLabels=newHashtable<Integer,JComponent>();
customLabels.put(0,makeLabel(« none »));
customLabels.put(80,makeLabel(« a bit »));
customLabels.put(190,makeLabel(« quite much »));
customLabels.put(255,makeLabel(« maximum »));
on décide des valeurs qui auront
un label
Le JSpinner
● composant destiné à éditer une valeur, soit au clavier, soit avec 2 petites flèches
● comportement similaire au JSlider (minimum, maximum, etc)
Saisies filtrées
● les SpinnerModel refusent les valeurs qui ne correspondent pas à ce qu’ils attendent, comme par exemple un mot au lieu d’un nombre
● ce type de filtrage peut également être mis en œuvre grâce au JFormattedTextField
● exemple: filtrage d’adresses IP
Les arbres
● les acteurs:
– JTree:la vue graphique
– TreeModel:lemodèle de données
– TreeNode:lesnoeuds
● 2 façons de gérer les arbres:
– le modèle qui sait tout et fait tout
– les nœuds qui se connaissent entre eux
Interface Graphique en Java 1.6 Combos, sliders, spinners et arbres (635 KO) (Cours PDF)