Comparaison des éléments d'un JPanel

Comparaison des éléments d'un JPanel - Java - Programmation

Marsh Posté le 30-09-2008 à 17:22:40    

Bonjour à tous,
J'ai un problème dont voici l'énoncé ... Je souhaite parcourir une classe (un JPanel dans mon cas) qui contient des Fields, d'autres JPanel qui contiennent eux même des JTextField, JComboBox, ...
 
Le but est simple, comment prendre une photocopie d'une classe à un instant donné, en pouvoir déterminer plus tard si des champs ont étés modifiés.
 
Quelqu'un a-t-il un bout de code qui pourrait me mettre sur la voie ?

Reply

Marsh Posté le 30-09-2008 à 17:22:40   

Reply

Marsh Posté le 30-09-2008 à 20:08:50    

Tu fais un Listener sur tes champs, dès qu'un champ est modifié, ça notifie ta class qu'un champ est modifié.
ex : ChangeListener ou quelque chose comme ça


Message édité par zapan666 le 30-09-2008 à 20:09:13

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 01-10-2008 à 10:04:30    

Oui bien sur, mais il faut voir ça comme un principe réutilisable sur d'autres classes. De plus, j'en ai qq une avec plus d'une trentaine de champs ... et je ne te parle pas des JComponent ajouté par d'autres membres de l'équipe qui oubliront les listeners ...

Reply

Marsh Posté le 01-10-2008 à 12:46:49    

Tu passe par une factory qui ajoute les listeners a la création alors.
 


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 01-10-2008 à 18:03:31    

Voici en fait un début de code de ce que je voulais faire  

Code :
  1. public void instanceOf(JComponent component) {       
  2.         for (int i=0;i<component.getComponentCount();i++) {
  3.             System.out.print(component.getComponent(i).getClass().getName());
  4.             if (component.getComponent(i) instanceof javax.swing.text.JTextComponent) { // Tous les champs textes
  5.                 System.out.println(" Valeur="+((javax.swing.text.JTextComponent)component.getComponent(i)).getText());
  6.                 continue;
  7.             }
  8.             if (component.getComponent(i) instanceof JComboBox) {
  9.                 System.out.println(" Valeur="+((JComboBox)component.getComponent(i)).getSelectedIndex());
  10.                 continue;
  11.             }
  12.             if (component.getComponent(i) instanceof JList) {
  13.                 System.out.println(" Valeur="+((JList)component.getComponent(i)).getSelectedIndex());
  14.                 continue;
  15.             }
  16.             if (component.getComponent(i) instanceof JTable) {
  17.                 System.out.println(" Valeur="+((JTable)component.getComponent(i)).getSelectedRow());
  18.                 continue;
  19.             }
  20.             if (component.getComponent(i) instanceof JLabel) {
  21.                 System.out.println(" Valeur="+((JLabel)component.getComponent(i)).getText());
  22.                 continue;
  23.             }
  24.             if (component.getComponent(i) instanceof AbstractButton) { // JButton, JCheckBox et JRadioButton
  25.                 System.out.println(" Valeur="+((AbstractButton)component.getComponent(i)).getText()+"/"+((AbstractButton)component.getComponent(i)).isSelected());
  26.                 continue;
  27.             }
  28.             if (component.getComponent(i) instanceof JPanel ||
  29.                 component.getComponent(i) instanceof JTabbedPane ||
  30.                 component.getComponent(i) instanceof Box ||
  31.                 component.getComponent(i) instanceof JViewport ||
  32.                 component.getComponent(i) instanceof JScrollPane) { // Les conteneurs
  33.                
  34.                 System.out.println("" );
  35.                 instanceOf((JComponent)component.getComponent(i));
  36.             }
  37.             else {
  38.                 System.out.println(" Valeur="+(component.getComponent(i)));
  39.             }
  40.         }
  41.     }


 
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 ?


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed