2013-07-02 122 views
-2

这是我的团队项目部分。当我输入客户ID并按OK时,客户详细信息以表格格式显示。该表包含以下列:星期日,费率,星期六, 费率,其他,费率类似。JTable运行时间计算?

我的问题是我想输入整数,计算它,然后将其存储在数据库中。在表中运行时间我想输入数字,计算并需要存储在数据库中。该怎么办?提前致谢。

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.*; 
import javax.swing.*; 
import javax.swing.event.CellEditorListener; 
import javax.swing.event.ChangeEvent; 
import javax.swing.table.DefaultTableModel; 
public class TestTable 
{ 
public static void main(String[] args) 
{ 
    TestTable testTable = new TestTable(); 
} 
public TestTable() 
{ 
    EventQueue.invokeLater(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      try 
      { 
       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
      } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
      } 
      JFrame frame = new JFrame("Testing"); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setLayout(new BorderLayout()); 
      frame.add(new TestTable.Bill()); 
      frame.pack(); 
      frame.setLocationRelativeTo(null); 
      frame.setVisible(true); 
     } 
    }); 
}  
public class Bill extends JPanel implements ActionListener ,CellEditorListener 
{ 
    JTextField textFieldId; 
    JLabel l1; 
    JLabel l2; 
    JButton b1,b2,b3; 
    JTextField sun,sunr,sat,satr,oth,othr; 
    float sum1,totall; 
    ResultSet rs1 = null; 
    DefaultTableModel model = new DefaultTableModel();  
    private int rows; 
    Double value; 
    public Bill() 
    { 
     setLayout(new BorderLayout());    
     JPanel fields = new JPanel(); 
     textFieldId = new JTextField(10); 
     l1 = new JLabel("New Customer Entry :-"); 
     l2 = new JLabel("Customer Id"); 
     b1 = new JButton("OK"); 
     b2 = new JButton("Calculate"); 
     b3 = new JButton("Print"); 
     fields.add(l2); 
     fields.add(textFieldId); 
     fields.add(b1); 
     fields.add(b2); 
     fields.add(b3); 
     add(fields, BorderLayout.NORTH); 
     b1.addActionListener(this); 
     b2.addActionListener(this); 
     b3.addActionListener(this); 
     // Don't forget to add a table. 
     add(new JScrollPane(new JTable(model))); 
    } 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     System.out.println("You clicked the button"); 
     Connection con; 
     if (e.getSource() == b1) 
     { 
      PreparedStatement ps = null; 
      Statement stmt = null; 
      try 
      { 

       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       con = DriverManager.getConnection("jdbc:odbc:devendra"); 
       ps = con.prepareStatement("SELECT * FROM Customer where Customer_Id = ?"); 
       // You must bind the parameter with a value... 
       ps.setString(1, textFieldId.getText()); 
       rs1 = ps.executeQuery(); 
       model.addColumn("Customer_Id"); 
       model.addColumn("Customer_Name"); 
       model.addColumn("Contact"); 
       model.addColumn("Paper_Name"); 
       model.addColumn("Sunday"); 
       model.addColumn("Rate"); 
       model.addColumn("Satarday"); 
       model.addColumn("Rate"); 
       model.addColumn("Other Day"); 
       model.addColumn("Rate"); 
       model.addColumn("Price"); 
       model.setRowCount(0); 
       while (rs1.next()) 
       {       
         model.addRow(new Object[]{rs1.getString(1),rs1.getString(2),rs1.getString(3),rs1.getString(4),rs1.getString(5), 
          rs1.getString(6),rs1.getString(7),rs1.getString(8),rs1.getString(9),rs1.getString(10)}); 
       } 
      // Vector data = model.getDataVector(); 

       JOptionPane.showMessageDialog(null, "You successfully Enter the Entry"); 
      } 
      catch (SQLException s) 
      { 
       System.out.println("SQL code does not execute."); 
       JOptionPane.showMessageDialog(null, "Please Enter the Detail Correctly"); 
      } catch (Exception exp) 
      { 
       JOptionPane.showMessageDialog(this, "Failed to perform query: " + exp.getMessage()); 
      } finally 
      { 
       try { 
        ps.close(); 
       } 
       catch (Exception ex) 
       { 
       } 
      }     
     } 
     if (e.getSource() == b2)  
     { 
      int rowCount = model.getRowCount(); 


      for(int i =1; i<rowCount;i++) 
      { 
       Double valuea = (Double) model.getValueAt(i, 5); 
       Double valueb = (Double) model.getValueAt(i, 6); 
       Double valuec = (Double) model.getValueAt(i, 7); 
       Double valued = (Double) model.getValueAt(i, 8); 
       Double valuee = (Double) model.getValueAt(i, 9); 
       Double valuef = (Double) model.getValueAt(i, 10); 
        double value; 
        value = Double.parseDouble(String.valueOf(valuea)) * Double.parseDouble(String.valueOf(valueb)); 
        model.setValueAt(value, i, 10); 
      } 

    } 

}

@Override 
    public void editingStopped(ChangeEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

    @Override 
    public void editingCanceled(ChangeEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 



} 

}

+3

_I想输入数字,计算[和]存储在数据库中._什么阻止你?你的'UPDATE'语句在哪里?您要求某人使用支持不佳的驱动程序,针对不可访问的数据库上的隐含架构调试/修改冗长的代码。 L&F应该是不相关的,只需要一个数据库属性。请修改您的问题以包含显示问题的[sscce](http://sscce.org/)。 – trashgod

+0

我刚刚编辑了code.when我运行这些代码它得到成功执行,但我不给我适当的输出,因为我想要它。现在该怎么做,请告诉我? –

回答

2

我怎么没看到你的INSERT可以成功:括号不均衡,以及setValueAt() -were其文本实际调用,回报void;检查日志。您似乎插入了单个属性,而Customer关系的值为11.如果您的意思是UPDATETotal属性,请注意您的架构违反了normal form,因为Total取决于其他属性的子集。咨询你的小组关于纠正模式。将sum1的公式重新分解为一个方法,只要显示Total,就可以重复使用该方法。

+0

请在你的系统中调试这些代码。当表出现我手动输入列前列从哪里列开始从星期天和结束率和整个计算显示在总列.. 和我的团队得到了尽兴如何做这些代码.. @ trashgod 如果你能帮我解决这些问题 :)请在你的系统中运行.. –

+0

也考虑一个'model.addRow()'方法,而不是'model.getDataVector()'。 – trashgod

0

我不认为你的代码是正确的。它如何添加行或列。我认为当您完成将所有内容添加到表模型时,需要提供table model,并且还会创建一个新的function来计算总和。还要在构造函数中添加列,即只添加一次。咨询你的小组。

+0

你对这些问题有什么建议吗? 实际上,如果我们有任何想法或解决方案,那么我们都不知道任何更多的东西,然后我们编辑我们的代码。 但你也帮我解决了这些问题。谢谢你的帮助... –

+0

'DefaultTableModel'是一个'TableModel'。 – trashgod

+0

可以给我从那个链接的教程链接,我可以了解更多...? –