Envoyé par
tchize_
le problème reste le même, tu va être confronté à un nuage de Textfield, radio bouton, boites déroulantes, sans savoir le comment du pourquoi de chacun,
Sinon, pour scanner, on t'as donné la méthode: getComponents(), après faut jouer avec instanceOf pour savoir quoi en faire.
Voici en fait un début de code de ce que je voulais faire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
public void instanceOf(JComponent component) {
for (int i=0;i<component.getComponentCount();i++) {
System.out.print(component.getComponent(i).getClass().getName());
if (component.getComponent(i) instanceof javax.swing.text.JTextComponent) { // Tous les champs textes
System.out.println(" Valeur="+((javax.swing.text.JTextComponent)component.getComponent(i)).getText());
continue;
}
if (component.getComponent(i) instanceof JComboBox) {
System.out.println(" Valeur="+((JComboBox)component.getComponent(i)).getSelectedIndex());
continue;
}
if (component.getComponent(i) instanceof JList) {
System.out.println(" Valeur="+((JList)component.getComponent(i)).getSelectedIndex());
continue;
}
if (component.getComponent(i) instanceof JTable) {
System.out.println(" Valeur="+((JTable)component.getComponent(i)).getSelectedRow());
continue;
}
if (component.getComponent(i) instanceof JLabel) {
System.out.println(" Valeur="+((JLabel)component.getComponent(i)).getText());
continue;
}
if (component.getComponent(i) instanceof AbstractButton) { // JButton, JCheckBox et JRadioButton
System.out.println(" Valeur="+((AbstractButton)component.getComponent(i)).getText()+"/"+((AbstractButton)component.getComponent(i)).isSelected());
continue;
}
if (component.getComponent(i) instanceof JPanel ||
component.getComponent(i) instanceof JTabbedPane ||
component.getComponent(i) instanceof Box ||
component.getComponent(i) instanceof JViewport ||
component.getComponent(i) instanceof JScrollPane) { // Les conteneurs
System.out.println("");
instanceOf((JComponent)component.getComponent(i));
}
else {
System.out.println(" Valeur="+(component.getComponent(i)));
}
}
} |
Cette méthode balaye tous les composants d'un composant donné (un JPanel par exemple) et affiche la valeur de chaque JComponent.
J'y trouve trois problèmes :
Comment reconnaitre les JComponent qui sont des conteneurs (pour ne par avoir des tests JPanel || JScrollPane, ...
N'y a-t-il pas plus simple de connaitre la valeur d'un JComponent que de tester son type, puis appliquer la bonne méthode ?
Est-il possible de connaitre le nom de la variable de classe du JComponent ?
Partager