繁体   English   中英

JTable:从表中获取数据

[英]JTable : getting data from table

我正在尝试运行此代码。其中包含一个具有2行4列的表,该表用于输入学生的分数,但是我不断在353行上收到此nullpointer异常的错误。码

    package uclidit;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.*;
    import javax.swing.JOptionPane;
    import javax.swing.table.DefaultTableModel;

     public class EdittedForm extends javax.swing.JFrame {
     String course,yearf,yeart, aggr;

    public EdittedForm() {
        initComponents();
    }


    @SuppressWarnings("unchecked")


    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here
        getData();

        try{
        String url="jdbc:mysql://localhost:3306/entryform";
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection(url,"root","root");
                String query="insert into 

     marks(course,yearf,yeart,sem1,sem2,sem3,sem4,sem5,sem6,sem7,sem8,aggregate)
               values(?,?,?,?,?,?,?,?,?,?,?,?)";
                PreparedStatement ps = con.prepareStatement(query);

                ps.setString(1,course);
               ps.setString(2,yearf);
                ps.setString(3,yeart);

                ps.setFloat(4,0);

               ps.setFloat(5,0);
                ps.setFloat(6,0);
                ps.setFloat(7,0);
                ps.setFloat(8, 0);
                ps.setFloat(9,0);
               ps.setFloat(10,0);
                ps.setFloat(11,0);
              ps.setString(12,aggr);

            ps.executeUpdate();


        }
        catch(Exception e){
            e.printStackTrace();
        }
    }                                        
          public void getData()
      {



    course = jTable1.getValueAt(0,0).toString();
    JOptionPane.showMessageDialog(this, course);
     yearf = jTable1.getValueAt(0,1).toString();
     JOptionPane.showMessageDialog(this,yearf );
     yeart=jTable1.getValueAt(0,2).toString();
     JOptionPane.showMessageDialog(this, yeart);
     aggr = jTable1.getValueAt(0,3).toString();
     JOptionPane.showMessageDialog(this, aggr);

     }

    public static void main(String args[]) {


        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EdittedForm().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    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.JTable jTable2;
    private javax.swing.JTable jTable3;
    private javax.swing.JTable jTable4;
    private javax.swing.JTable jTable5;
    private javax.swing.JTable jTable6;
    private javax.swing.JTable jTable7;
    private javax.swing.JTable jTable8;
    private javax.swing.JTable jTable9;
    // End of variables declaration                   
   }

错误是

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at uclidit.EdittedForm.getData(EdittedForm.java:353)
at uclidit.EdittedForm.jButton1ActionPerformed(EdittedForm.java:316)
at uclidit.EdittedForm.access$000(EdittedForm.java:17)
at uclidit.EdittedForm$7.actionPerformed(EdittedForm.java:251)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

据我jtable1jtable1尚未初始化。 确保是。 如果错误仍然存​​在,那是因为getData()中的getValue()调用之一返回null 您可以使用String.valueOf(jTable1.getValueAt(0,0))代替jTable1.getValueAt(0,0).toString()来避免这种情况下的NullPointerException

这是完整的代码吗? 据我所知,您声明了jTable1但未初始化它。 因此,您必须使用以下命令准备或创建一个jTable1

jTable1 = new JTable(data, columnNames);

构造函数在哪里

JTable(Object[][] rowData, Object[] columnNames) 
JTable(Vector rowData, Vector columnNames)

此处提供更多信息: https : //docs.oracle.com/javase/tutorial/uiswing/components/table.html

因此,我认为您会在以下位置得到空指针异常:

course = jTable1.getValueAt(0, 0).toString();

因为jTable1为空

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM