2014-10-05 17 views
-1

我是Java新手,正在运行此代码以在我的数据库(日志)中显示一个表的内容。 函数getData将ResultSet转换为二维字符串数组并将其返回。此功能对所有其他查询都正常工作。 也在我的数据库TimeStamp是时间戳类型。这是否会造成问题?当我运行这段代码时,我得到了一个无法格式化给定对象的数字异常。不知道有什么问题

package stock; 

public class ViewTrans extends javax.swing.JFrame { 


public ViewTrans() { 
    initComponents(); 
    Login l=new Login(); 
    String uname=l.getUsername(); 
    dbconnect db=new dbconnect(); 
    String str[][]=db.getData("select SName,Amount,Value,TimeStamp,Operation,Brokerage from logs where UserName='"+uname+"'"); 
    for(int i=0;i<10;i++) 

    { 
     for(int j=0;j<5;j++) 
     { 
      ltable.setValueAt(str[i][j],i,j); 

     } 
    } 
} 


@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    jScrollPane1 = new javax.swing.JScrollPane(); 
    ltable = new javax.swing.JTable(); 
    homebutton = new javax.swing.JButton(); 
    viewaccbutton = new javax.swing.JButton(); 
    viewcurrstockbutton = new javax.swing.JButton(); 
    ebutton = new javax.swing.JButton(); 
    jLabel1 = new javax.swing.JLabel(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    ltable.setModel(new javax.swing.table.DefaultTableModel(
     new Object [][] { 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null}, 
      {null, null, null, null, null, null} 
     }, 
     new String [] { 
      "Company Name", "No of Shares", "Value of Share", "TimeStamp", "Operation", "Brokerage" 
     } 
    ) { 
     Class[] types = new Class [] { 
      java.lang.String.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Object.class, java.lang.String.class, java.lang.Double.class 
     }; 

     public Class getColumnClass(int columnIndex) { 
      return types [columnIndex]; 
     } 
    }); 
    jScrollPane1.setViewportView(ltable); 

    homebutton.setText("Home"); 
    homebutton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      homebuttonActionPerformed(evt); 
     } 
    }); 

    viewaccbutton.setText("View Account"); 
    viewaccbutton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      viewaccbuttonActionPerformed(evt); 
     } 
    }); 

    viewcurrstockbutton.setText("View Current Stock"); 
    viewcurrstockbutton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      viewcurrstockbuttonActionPerformed(evt); 
     } 
    }); 

    ebutton.setText("Exit"); 
    ebutton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      ebuttonActionPerformed(evt); 
     } 
    }); 

    jLabel1.setText("Your Transactions:"); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(20, 20, 20) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(jLabel1) 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 497, javax.swing.GroupLayout.PREFERRED_SIZE))) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(49, 49, 49) 
      .addComponent(homebutton) 
      .addGap(36, 36, 36) 
      .addComponent(viewaccbutton) 
      .addGap(28, 28, 28) 
      .addComponent(viewcurrstockbutton) 
      .addGap(33, 33, 33) 
      .addComponent(ebutton)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap(13, Short.MAX_VALUE) 
      .addComponent(jLabel1) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(45, 45, 45) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(viewaccbutton) 
       .addComponent(viewcurrstockbutton) 
       .addComponent(homebutton) 
       .addComponent(ebutton)) 
      .addGap(82, 82, 82)) 
    ); 

    pack(); 
}// </editor-fold>       

private void homebuttonActionPerformed(java.awt.event.ActionEvent evt) {           
    HomePage h=new HomePage(); 
    h.setVisible(true); 
    dispose(); 
}           

private void ebuttonActionPerformed(java.awt.event.ActionEvent evt) {           
    dispose(); 
}          

private void viewcurrstockbuttonActionPerformed(java.awt.event.ActionEvent evt) {              
    ViewStock vs=new ViewStock(); 
    vs.setVisible(true); 
    dispose(); 
}             

private void viewaccbuttonActionPerformed(java.awt.event.ActionEvent evt) {            
    ViewAccount h=new ViewAccount(); 
    h.setVisible(true); 
    dispose(); 
}            


public static void main(String args[]) { 

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

// Variables declaration - do not modify      
private javax.swing.JButton ebutton; 
private javax.swing.JButton homebutton; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JTable ltable; 
private javax.swing.JButton viewaccbutton; 
private javax.swing.JButton viewcurrstockbutton; 
// End of variables declaration     
} 

我得到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Number 
    at java.text.DecimalFormat.format(DecimalFormat.java:505) 
    at java.text.Format.format(Format.java:157) 
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.configureValue(SynthTableUI.java:803) 
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.getTableCellRendererComponent(SynthTableUI.java:790) 
    at javax.swing.JTable.prepareRenderer(JTable.java:5736) 
    at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684) 
    at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581) 
    at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365) 
    at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276) 
    at javax.swing.JComponent.paintComponent(JComponent.java:778) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintChildren(JComponent.java:887) 
    at javax.swing.JComponent.paint(JComponent.java:1063) 
    at javax.swing.JViewport.paint(JViewport.java:731) 
    at javax.swing.JComponent.paintChildren(JComponent.java:887) 
    at javax.swing.JComponent.paint(JComponent.java:1063) 
    at javax.swing.JComponent.paintChildren(JComponent.java:887) 
    at javax.swing.JComponent.paint(JComponent.java:1063) 
    at javax.swing.JComponent.paintChildren(JComponent.java:887) 
    at javax.swing.JComponent.paint(JComponent.java:1063) 
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:585) 
    at javax.swing.JComponent.paintChildren(JComponent.java:887) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5226) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1249) 
    at javax.swing.JComponent.paint(JComponent.java:1040) 
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39) 
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78) 
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115) 
    at java.awt.Container.paint(Container.java:1967) 
    at java.awt.Window.paint(Window.java:3877) 
    at javax.swing.RepaintManager$3.run(RepaintManager.java:819) 
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718) 
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:694) 
    at java.awt.EventQueue$3.run(EventQueue.java:692) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

回答

3

这是相当简单的。你告诉转台的列分别含有一个字符串,整数,双精度等:

public Class getColumnClass(int columnIndex) { 
     return types [columnIndex]; 
    } 

但事实并非如此,因为这里就是你如何填充你的表格模型:

String str[][]=db.getData("select SName,Amount,Value,TimeStamp,Operation,Brokerage from logs where UserName='"+uname+"'"); 
for(int i=0;i<10;i++) { 
    for(int j=0;j<5;j++) { 
     ltable.setValueAt(str[i][j],i,j); 
    } 
} 

因此,每个单元格实际上都包含一个字符串。

+0

对于getColumnClass为+1,但所有以for(int ...并以last结尾)都可以...,为什么行和列的数字是resticted,是不是有XxxTableModel例如 – mKorbel 2014-10-05 10:41:58

相关问题