2016-09-24 78 views
0

有人知道jFrame中的jTable是否具有行顯示限制?我必須在jTable中顯示9 500 000行,有人知道這是否可能?jtable上允許的最大數量行

我的代碼:顯示

私人無效jButton1MouseClicked(java.awt.event.MouseEvent中的EVT){

 double prob; 
     Vector row = new Vector(); 
     int cont=0; 
     DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
     for (int i = 0; i < 2; i ++) { 
      for (int j = 0; j < 4; j++){ 
       for (int k = 0; k < 4; k++){ 
        for (int l = 0; l < 3; l++){ 
         for (int m = 0; m < 4; m++){ 
          for (int n = 0; n < 4; n++){ 
           for (int o = 0; o < 3; o++){ 
            for (int p = 0; p < 4; p++){ 
             for (int q = 0; q < 4; q++) { 
              for (int r = 0; r < 2; r++){ 
               for (int s = 0; s < 4; s++){ 
                for (int t = 0; t < 4; t++){ 
                 for (int u = 0; u < 4; u++) { 
                  prob = ((pesogabinete * retornaSimGabinete(gabinetesel,gabinete.get(i))) + (pesoprocessador *(retornaSimProc(processadorsel,processador.get(j)))) + (pesomemoria * (retornaSimMem(memoriasel,memoria.get(k)))) + (pesohd * (retornaSimHd(hdsel,hd.get(l)))) + (pesossd * (retornaSimSsd(ssdsel,ssd.get(m)))) + (pesogpu * (retornaSimGpu(gpusel,gpu.get(n)))) + (pesoteclado * (retornaSimTeclado(tecladosel,teclado.get(o)))) + (pesomouse * (retornaSimMouse(mousesel,mouse.get(p)))) + (pesofonte * (retornaSimFonte(fontesel,fonte.get(q)))) + (pesorefrigeracao * (retornaSimRefrigeracao(refrigeracaosel,refrigeracao.get(r)))) + (pesomonitor * (retornaSimMonitor(monitorsel,monitor.get(s)))) + (pesoheadset * (retornaSimHeadset(headsetsel,headset.get(t)))) + (pesomotherboard * (retornaSimMotherboard(motherboardsel,motherboard.get(u)))))/(pesogabinete+pesoprocessador+pesomemoria+pesohd+pesossd+pesomouse+pesoteclado+pesogpu+pesofonte+pesorefrigeracao+pesomonitor+pesoheadset+pesomotherboard); 
                  row.add(gabinete.get(i)); 
                  row.add(processador.get(j)); 
                  row.add(memoria.get(k)); 
                  row.add(hd.get(l)); 
                  row.add(ssd.get(m)); 
                  row.add(gpu.get(n)); 
                  row.add(teclado.get(o)); 
                  row.add(mouse.get(p)); 
                  row.add(fonte.get(q)); 
                  row.add(refrigeracao.get(r)); 
                  row.add(monitor.get(s)); 
                  row.add(headset.get(t)); 
                  row.add(motherboard.get(u)); 
                  row.add(Double.toString(prob)); 
                  model.addRow (row); 
                  cont++; 
                  System.out.println(cont); 
                  row.clear(); 
                 }         
                } 
               } 
              } 
             } 
            } 
           } 

          } 
         } 
        } 
       } 
      } 
     } 
    }          


    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new Tela().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel10; 
    private javax.swing.JLabel jLabel11; 
    private javax.swing.JLabel jLabel12; 
    private javax.swing.JLabel jLabel13; 
    private javax.swing.JLabel jLabel14; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JLabel jLabel6; 
    private javax.swing.JLabel jLabel7; 
    private javax.swing.JLabel jLabel8; 
    private javax.swing.JLabel jLabel9; 
    private javax.swing.JList<String> jList1; 
    private javax.swing.JList<String> jList10; 
    private javax.swing.JList<String> jList11; 
    private javax.swing.JList<String> jList12; 
    private javax.swing.JList<String> jList13; 
    private javax.swing.JList<String> jList2; 
    private javax.swing.JList<String> jList3; 
    private javax.swing.JList<String> jList4; 
    private javax.swing.JList<String> jList5; 
    private javax.swing.JList<String> jList6; 
    private javax.swing.JList<String> jList7; 
    private javax.swing.JList<String> jList8; 
    private javax.swing.JList<String> jList9; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JScrollPane jScrollPane10; 
    private javax.swing.JScrollPane jScrollPane11; 
    private javax.swing.JScrollPane jScrollPane12; 
    private javax.swing.JScrollPane jScrollPane13; 
    private javax.swing.JScrollPane jScrollPane14; 
    private javax.swing.JScrollPane jScrollPane2; 
    private javax.swing.JScrollPane jScrollPane3; 
    private javax.swing.JScrollPane jScrollPane4; 
    private javax.swing.JScrollPane jScrollPane5; 
    private javax.swing.JScrollPane jScrollPane6; 
    private javax.swing.JScrollPane jScrollPane7; 
    private javax.swing.JScrollPane jScrollPane8; 
    private javax.swing.JScrollPane jScrollPane9; 
    private javax.swing.JTable jTable1; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField jTextField10; 
    private javax.swing.JTextField jTextField11; 
    private javax.swing.JTextField jTextField12; 
    private javax.swing.JTextField jTextField13; 
    private javax.swing.JTextField jTextField2; 
    private javax.swing.JTextField jTextField3; 
    private javax.swing.JTextField jTextField4; 
    private javax.swing.JTextField jTextField5; 
    private javax.swing.JTextField jTextField6; 
    private javax.swing.JTextField jTextField7; 
    private javax.swing.JTextField jTextField8; 
    private javax.swing.JTextField jTextField9; 
    // End of variables declaration     
} 

錯誤:

at javax.swing.JTable.getValueAt(9436654 
JTable.java:2717) 

at javax.swing.plaf.basic.BasicTableUI.paintCell(9436681 
BasicTableUI.java:2114) 

at javax.swing.JComponent.paint(9436742 
JComponent.java:1056) 

at java.awt.EventDispatchThread.pumpEvents(9436957 
EventDispatchThread.java:93) 

我相信這個問題是在row.clear()因爲如果我刪除此代碼的作品,但總是在表中顯示相同的值。

回答

1

事實上,我不確定這是否可行。但是你可以測試它。試試這個(嘗試自己編寫代碼)

1-編寫一個特定的函數,它具有從零到您感興趣的大小(比如9500000)的循環。在此循環中,將字符串或迭代次數寫入預定義的輸出文件(逐行)。然後在另一個函數中(比如填充表)從該文件中逐行讀取,並添加作爲一個新行到表中。 如果可能的話,表格將被填充,否則會發生特定的異常。

.......................................... 試試這個吧

添加到您的框架一個正好在列和沒有行的表。

對(INT I = 0;我< 1000000;我++)

{

//這裏添加一個新行表

//如果發生錯誤,減小尺寸的循環。

}

+0

我這樣做,我的問題是與清楚,我會把每一行中值的向量函數,我將更新後德。 –

相關問題