简体   繁体   English

如何在Java NetBeans中使用iscelleditable方法

[英]How to use iscelleditable method in java netbeans

Hey I'm a Java newbie so I am asking how can I implement the is cell editable method in java Every time I try to implement it I get an Array Index Out Of Bounds error My Table is generated randomly as per a database setup & I want to set the 1st 2nd 3rd column not to be editable 嘿,我是Java新手,所以我想问我如何在Java中实现is单元格可编辑方法每次尝试实现它时,都会出现数组索引超出范围错误我的表是根据数据库设置随机生成的&想要将第一第二三列设置为不可编辑

//Get columns if data has been recorded for that ticket 
public void getColumns() {
    //jTable1.setModel(new DefaultTableModel(null,new String[]{""}));
    DefaultTableModel tableModel = new DefaultTableModel();
    String query="Select subjectName from subject where class ='"+c+"' order by subjectName asc";
    DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
    try {
        PreparedStatement ps=conn.prepareStatement(query);
        ResultSet rs=ps.executeQuery(query);
        tableModel.addColumn("FirstName");//0
        tableModel.addColumn("MiddleName");//1
        tableModel.addColumn("SurName");//2
        tableModel.addColumn("Examdate");//3
        tableModel.addColumn("Examtype");//4
        tableModel.addColumn("Stream");//5
        tableModel.addColumn("Avg");//6
        tableModel.addColumn("Total");//7
        tableModel.addColumn("Position");//8

        while(rs.next()){
            //Local varibles are assigned to values gained in the database          
            String columnName=rs.getString(1);
            tableModel.addColumn(columnName);
        }

        jTable1.setModel(tableModel);
        jTable1.setModel(dtm);
    }
    catch(SQLException se){
        JOptionPane.showMessageDialog(null,se.getMessage());
    }

}    
DefaultTableModel dtm = new DefaultTableModel(0, 0) {
public boolean isCellEditable(int row, int column) {
return false;
}
};    

The data from the 1st, 2nd, 3rd, 4th 5th and 6th column come from the database and the rest is manually inputted by the user The method responsible for retrieving this data is 来自第一,第二,第三,第四,第五和第六列的数据来自数据库,其余的由用户手动输入。负责检索此数据的方法是

//gets names avg,examtype date strm and results
public void getResults(){
int pos=0;
int x=0;
int index=9;
String query="Select name,mname,sname,examtype,examdate,Stream,avg,total,pos "   
+ "from result"+c+" where examtype='"+en+"' and stream='"+strm+"'   
order by total desc";
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
try{
PreparedStatement ps=conn.prepareStatement(query);
ResultSet rs=ps.executeQuery(query);
while(rs.next()){
//Local varibles are assigned to values gained in the database

String fnamee=rs.getString(1);
String mnamee=rs.getString(2);
String snamee=rs.getString(3);
String examname=rs.getString(4);
String examdate=rs.getString(5);
String Stream=rs.getString(6);
double avg=rs.getDouble(7);
int total=rs.getInt(8);
pos++;
//Until seen false a row will be added and display data from database
model.addRow(new Object[]
{fnamee,mnamee,snamee,examname,examdate,Stream,avg,total,pos});
}
//Hides unwanted columns
jTable1.getColumnModel().getColumn(3).setMinWidth(0);
jTable1.getColumnModel().getColumn(3).setMaxWidth(0);
jTable1.getColumnModel().getColumn(3).setWidth(0);
jTable1.getColumnModel().getColumn(4).setMinWidth(0);
jTable1.getColumnModel().getColumn(4).setMaxWidth(0);
jTable1.getColumnModel().getColumn(4).setWidth(0);  
jTable1.getColumnModel().getColumn(5).setMinWidth(0);
jTable1.getColumnModel().getColumn(5).setMaxWidth(0);
jTable1.getColumnModel().getColumn(5).setWidth(0); 
//method responisble for udapting  the position
positionInsert();
}

See table here 见表在这里 在此处输入图片说明

Here is the solution for my Problem I figured it out 这是我想出的问题的解决方案

   //Get columns if data has been recorded for that ticket 
    public void getColumns(){

        //Start
         DefaultTableModel tableModel = new DefaultTableModel() {
    @Override
    public boolean isCellEditable(int row, int column) {
        if(column<10){
        return false;
        }
        else{
           return true;
        }

    }
    };

    //end

     String query="Select subjectName from subject where class ='"+c+"' order by subjectName asc";

          try{
    PreparedStatement ps=conn.prepareStatement(query);
    ResultSet rs=ps.executeQuery(query);
    tableModel.addColumn("FirstName");//0
    tableModel.addColumn("MiddleName");//1
    tableModel.addColumn("SurName");//2
    tableModel.addColumn("Examdate");//3
    tableModel.addColumn("Examtype");//4
    tableModel.addColumn("Stream");//5
    tableModel.addColumn("Avg");//6
    tableModel.addColumn("Grade");//7
    tableModel.addColumn("Total");//8
    tableModel.addColumn("Position");//9
    while(rs.next()){
    //Local varibles are assigned to values gained in the database      
    String columnName=rs.getString(1);

   tableModel.addColumn(columnName);

   }

   //Sets new Tablemodel

  jTable1.setModel(tableModel);

    }

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

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