Hello to all,
I have an AbstractTableModel and im trying to make my checkboxes to work..I have tried different things but i just cant get it
/>
I have an AbstractTableModel and im trying to make my checkboxes to work..I have tried different things but i just cant get it
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;
public class Gui extends JFrame {
private StudentList studentList = new StudentList();
public Gui(){
addToArrayList();
setSize(1240,1024);
setDefaultCloseOperation(EXIT_ON_CLOSE);
makeLayout();
setVisible(true);
}
public final void addToArrayList()
{
studentList.addStudent(new Student("Maria","Lopez",20,"001"));
studentList.addStudent(new Student("Mark","Spenser",23,"002"));
studentList.addStudent(new Student("George","Fiorks",21,"003"));
studentList.addStudent(new Student("Michael","Perkens",25,"004"));
}
public final void makeLayout(){
setLayout(new BorderLayout());
final Model model = new Model();
final JTable table = new JTable();
table.setModel(model);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent lse) {
if( !lse.getValueIsAdjusting() )
{
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
if(column == 4 && table.getValueAt(row, 4) == Boolean.TRUE)
{
table.setValueAt(Boolean.FALSE, row, 4);
}
else
{
table.setValueAt(Boolean.TRUE,row,4);
}
}
}
});
add(new JScrollPane(table));
}
public class Model extends AbstractTableModel {
private String[] headers ={"Name","Surname","Age","Id",""};
@Override
public int getRowCount() {
return studentList.getStudentList().size();
}
@Override
public int getColumnCount() {
return headers.length;
}
@Override
public String getColumnName(int column) {
return headers[column];
}
@Override
public Object getValueAt(int row, int column) {
if(row < 0 || row >= studentList.getStudentList().size()) {
return null;
}
Student obj = studentList.getStudentList().get(row);
switch(column)
{
case 0: return obj.getName();
case 1: return obj.getSurName();
case 2: return obj.getAge();
case 3: return obj.getIdCode();
case 4: return Boolean.TRUE;
default: return null;
}
}
@Override
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}
@Override
public boolean isCellEditable(int row,int col)
{
if(col == 4){
return true;
}
else{
return false;
}
}
}
}