如何在JTable顶部添加新行并更改Java中新插入行的颜色?

问题描述:

我正在处理一个模块中的项目,我必须在数据网格中显示数据(为此我使用JTable)。问题是,当我在JTable中插入数据时,它将填充到表格底部,我想在表格顶部显示新行。请指导我完成这项任务,任何帮助将不胜感激。我正在使用NetBeans进行开发。如何在JTable顶部添加新行并更改Java中新插入行的颜色?

这里是我的代码来填充数据:

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*/} 
     } 
    } 

在此先感谢。

+0

您不妨考虑使用自己的“TableModel”比使用默认的一个。 –

+0

好的,让我检查一下这个教程。 –

的问题是,当我插入在JTable中的数据,它能够在表的底部填充,我想在餐桌上

table.addRow(str); 
的顶部,以显示新的行

其实你并没有插入一行,你正在添加一行。尝试阅读DefaultTableModel API的方法,该方法允许您在模型中的指定位置“插入”一行,在您的情况下该行将为第0行。

+0

非常感谢,我只是使用'insertRow()'来填充数据,它工作得很完美。请帮助我改变新插入的行的颜色,这是我必须做的最后一件事,我没有太多时间。 –

+0

@MDaimKhan,很高兴帮助。不要忘记“接受”这个问题,让人们知道问题已经解决。 – camickr

+0

'请帮我改变新插入的行的颜色 - 这个要求没有意义。为什么新插入的行需要单独的颜色。如果按两次按钮插入行,会发生什么情况?每个插入组是否获得不同的颜色?前一组是否重置?没有足够的信息来提供答案。用更多细节创建一个单独的问题。每个帖子只应提出一个问题。 “我没有太多时间” - 这与问题无关。时间管理是你的问题。你的问题没有比其他任何问题更重要。 – camickr