2017-06-11 2 views
0

Je travaille sur un projet dans lequel dans un module je dois montrer les données dans une grille de données (pour laquelle j'utilise JTable). Le problème est que, lorsque j'insère les données dans JTable, il est rempli au bas de la table, et je veux montrer les nouvelles lignes en haut de la table. Veuillez me guider pour accomplir cette tâche, toute aide sera appréciée. J'utilise NetBeans pour le développement.Comment ajouter de nouvelles lignes en haut de la JTable et modifier la couleur des lignes nouvellement insérées en Java?

Voici mon code pour remplir les données:

public void run() { 
    try { 
      FileWriter out = new FileWriter("test.txt"); 
      BufferedWriter bufWriter = new BufferedWriter(out); 

       int nb = input.readInt(); 
      System.out.println("Read Length"+ nb); 
      byte[] digit = new byte[nb]; 
      System.out.println("Writing......."); 
      for(int i = 0; i < nb; i++) 
      digit[i] = input.readByte(); 

      String st = new String(digit); 
      bufWriter.append(st); 
      bufWriter.close(); 
      out.close(); 
      System.out.println ("receive from : " + 
      clientSocket.getInetAddress() + ":" + 
      clientSocket.getPort() + " message - " + st); 

          DefaultTableModel table = (DefaultTableModel)_table.getModel(); 
      File file = new File("test.txt"); 
      Scanner f = new Scanner(file); 
      String line = null; 
      String[] str = null; 

      while(f.hasNext()){ 
       line = f.nextLine().replace('|', ','); 
       str = line.split(","); 
            table.addRow(str); 
            _table.setBackground(Color.red); 


      } 


      output.writeInt(st.length()); 
      output.writeBytes(st); 
     } 
     catch(EOFException e) { 
     System.out.println("EOF:"+e.getMessage()); } 
     catch(IOException e) { 
     System.out.println("IO:"+e.getMessage());} 

     finally { 
      try { 
       clientSocket.close(); 
      } 
      catch (IOException e){/*close failed*/} 
     } 
    } 

Merci à l'avance.

+0

Vous pouvez envisager d'utiliser votre propre 'TableModel' plutôt que d'utiliser celui par défaut. –

+0

Ok laissez-moi vérifier le tutoriel pour cela. –

Répondre

3

Le problème est que, lors de l'insertion des données dans JTable, il se peuplé au bas de la table, et je veux montrer les nouvelles lignes en haut de la table

table.addRow(str); 

Eh bien, en fait, vous n'insérez pas de ligne, vous ajoutez une ligne. Essayez de lire l'API DefaultTableModel pour une méthode qui vous permettra d'insérer une ligne à un emplacement spécifié dans le modèle, ce qui dans votre cas serait la ligne 0.

+0

Merci beaucoup, je viens d'utiliser 'insertRow()' pour remplir les données, cela a fonctionné parfaitement. S'il vous plaît aidez-moi à changer la couleur des rangées nouvellement insérées, c'est la dernière chose que je dois faire et je n'ai pas beaucoup de temps. –

+0

@MDaimKhan, heureux que cela a aidé. N'oublie pas d'accepter la question pour que les gens sachent que le problème a été résolu. – camickr

+0

'S'il vous plaît aidez-moi à changer la couleur des lignes nouvellement insérées - cette exigence n'a pas de sens. Pourquoi la ligne nouvellement insérée a besoin d'une couleur distincte. Que se passe-t-il si vous appuyez deux fois sur le bouton pour insérer des lignes? Chaque groupe d'insertion obtient-il une couleur différente? Est-ce que le groupe précédent est réinitialisé? Pas assez d'informations pour fournir une réponse. Créez une question distincte avec plus de détails. Une seule question par poste devrait être posée. "Je n'ai pas beaucoup de temps" - cela n'a aucun rapport avec la question. La gestion du temps est votre problème. Votre question n'a pas plus de priorité que toute autre question. – camickr