Clonage d'une JTable

Clonage d'une JTable - Java - Programmation

Marsh Posté le 27-07-2007 à 15:05:18    

Bonjour,
 
j'ai écris le programme de Test suivant pour essayer de copier une table mais j'obtiens le message suivant :

Code :
  1. The method clone() from the type Object is not visible line 29


la ligne 29 est la suivante :

Code :
  1. Table table2 = (Table)table.clone();


 
Voici le code :

Code :
  1. import javax.swing.JFrame;
  2. import javax.swing.JScrollPane;
  3. import javax.swing.JTable;
  4. public class Table extends JTable implements Cloneable{
  5. private static final long serialVersionUID = 1L;
  6. private JTable table;
  7. public Table(JTable table){
  8.  this.table = table;
  9. }
  10. public Table clone(){
  11.  Table table = new Table(this.table);
  12.  return table;
  13. }
  14. public static void main(String [] args){
  15.  JTable table = new JTable(4,5);
  16.  JScrollPane scroll = new JScrollPane(table);
  17.  JFrame frame = new JFrame("Initial" );
  18.  frame.setSize(600,250);
  19.  frame.add(scroll);
  20.  frame.setVisible(true);
  21.  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22.  Table table2 = (Table)table.clone();
  23.  JScrollPane scroll2 = new JScrollPane(table2);
  24.  JFrame frame2 = new JFrame("Copie" );
  25.  frame2.setSize(600,250);
  26.  frame2.add(scroll2);
  27.  frame2.setVisible(true);
  28.  frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  29. }
  30. }


 
Je voudrai savoir comment corriger cette erreur et si c'est bien comme cela qu'il faut faire pour copier une table
 
Merci

Reply

Marsh Posté le 27-07-2007 à 15:05:18   

Reply

Marsh Posté le 27-07-2007 à 16:48:54    

La méthode clone() existe deja et renvoie un Object donc tu n'as pas le droit d'appeler une méthode du même nom avec un type de retour différent. Je te conseille donc de renommer ta méthode.

Reply

Marsh Posté le 27-07-2007 à 16:58:09    

omartin a écrit :

La méthode clone() existe deja et renvoie un Object donc tu n'as pas le droit d'appeler une méthode du même nom avec un type de retour différent. Je te conseille donc de renommer ta méthode.


J'ai modifié mon code comme ceci.
Je n'ai plus d'erreur mais la fenetre qui devrait contenir la table copiée est vide ...

Code :
  1. import javax.swing.JFrame;
  2. import javax.swing.JScrollPane;
  3. import javax.swing.JTable;
  4. public class Table extends JTable implements Cloneable{
  5. private static final long serialVersionUID = 1L;
  6. private JTable table;
  7. public Table(JTable table){
  8.  this.table = table;
  9. }
  10. public Table copie(){
  11.  Table table = new Table(this.table);
  12.  return table;
  13. }
  14. public static void main(String [] args){
  15.  JTable table = new JTable(4,5);
  16.  JScrollPane scroll = new JScrollPane(table);
  17.  JFrame frame = new JFrame("Initial" );
  18.  frame.setSize(600,250);
  19.  frame.add(scroll);
  20.  frame.setVisible(true);
  21.  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22.  Table table2 = new Table(table);
  23.  Table copie = table2.copie();
  24.  JScrollPane scroll2 = new JScrollPane(copie);
  25.  JFrame frame2 = new JFrame("Copie" );
  26.  frame2.setSize(600,250);
  27.  frame2.add(scroll2);
  28.  frame2.setVisible(true);
  29.  frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30. }
  31. }

Reply

Marsh Posté le 27-07-2007 à 17:05:28    

Nan mais JTable est déjà cloneable. Tu réinventes la roue.


---------------
Töp of the plöp
Reply

Marsh Posté le 27-07-2007 à 18:51:41    

_darkalt3_ a écrit :

Nan mais JTable est déjà cloneable. Tu réinventes la roue.


Est-ce que tu pourrait m'indiquer le bout de code à écrire car j'ai essayé quelques trucs mais ça ne donne toujours rien.
 
Merci

Reply

Marsh Posté le 27-07-2007 à 19:51:57    

Reply

Sujets relatifs:

Leave a Replay

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