Interface graphique en Java saisies filtrées
Résumé
Cours interface graphique en Java saisies filtrées, tutoriel & guide de travaux pratiques JAVA en pdf.
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
● pour personnaliser les labels, il faut créer un Dictionary<Integer,JComponent> et le passer à setLabelTable
● exemple de labels personnalisés:
final Hashtable<Integer,JComponent> customLabels=new Hashtable<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
private static JLabel makeLabel(String string) {
JLabel l=new JLabel(string);
l.setOpaque(true);
l.setForeground(Color.RED);
l.setBackground(Color.GREEN);
return l;
}
● composant destiné à éditer une valeur, soit au clavier, soit avec 2 petites flèches
● comportement similaire au JSlider (minimum, maximum, etc)
● le plus souvent, on utilise un SpinnerNumberModel
● possibilité d'utiliser d'autres modèles prédéfinis:
– SpinnerDateModel: valeurs=dates
– SpinnerListModel: valeurs à choisir dans une liste prédéfinie le spinner peut n'agir que sur une partie de l'entrée
Saisies filtrées
Lecture recommandée Cours alignement conventionnel Cours alignement conventionnel en PDF, plus de 30 000 cours électromécanique gratuit, exercices gratuit, rapports pfe, l... Electromécanique Lire● 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
● on définit un formateur capable de passer d'une chaîne à un objet et vice-versa
● lève une ParseException en cas d'erreur public class IPFormatter extends AbstractFormatter {
@Override
public String valueToString(Object value) throws ParseException { if (value==null) {
return null;
}
try {
return ((Inet4Address)value).getHostAddress(); } catch (ClassCastException e) {
throw new ParseException("Invalid IPv4 address",0);
}
}
...
}
public class IPFormatter extends AbstractFormatter { private final static Pattern pattern=Pattern.compile( "([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
@Override
public Inet4Address stringToValue(String text) throws ParseException { Matcher matcher=pattern.matcher(text);
if (!matcher.matches()) {
throw new ParseException("Invalid IPv4 address", 0);
}
byte[] b = new byte[4];
for (int i=0;i<4;i++) {
int n = Integer.parseInt(matcher.group(1+i)); if (n < 0 || n > 255)
throw new ParseException("Invalid IPv4 address", 0); b[i] = (byte) n;
}
try {
return (Inet4Address) InetAddress.getByAddress(b); } catch (UnknownHostException e) {
throw new ParseException("Invalid IPv4 address", 0);
}
}
...
} 14
● on passe ensuite ce formateur au constructeur de JFormattedTextField
● à chaque édition, on va tester si l'entrée est valide: text.addCaretListener(new CaretListener() {
lève une @Override public void caretUpdate(CaretEvent e) {
try { ParseException en text.commitEdit();
text.setForeground(Color.GREEN); cas de problème
InetAddress a=(InetAddress) text.getValue();
if (a==null) return;
multicast.setText("Multicast: "+a.isMulticastAddress());
loopback.setText("Loopback address: "+a.isLoopbackAddress());
} catch (ParseException e1) {
text.setForeground(Color.RED);
multicast.setText("Multicast: ");
loopback.setText("Loopback address: ");
}
}
});
● on obtient ainsi une belle application:
Les arbres
● les acteurs:
– JTree: la vue graphique
– TreeModel: le modèle de données
– TreeNode: les noeuds
● 2 façons de gérer les arbres:
– le modèle qui sait tout et fait tout
– les noeuds qui se connaissent entre eux
- Format
- Taille
- 369 Ko
- Pages
- 55
- Domaine
- Cours JAVA/J2EE
- Publié le
- 15 mai 2020
- Vues
- 1
Ressources liées
.net et applications mobiles
Installer JDK (Java Développent Kit) et NetBeans sous Windows
Commentaires (0)
Connectez-vous pour laisser un commentaire.
Soyez le premier à commenter
Partagez votre avis sur ce document — questions, retours ou votre propre expérience.