Булевский столбец в таблице - Java
Формулировка задачи:
здравствуйте помогите пожалуйста сделать кое что
а конкретно булевский столбец в JTable и как обрабатывать события
я понимаю что для этого должен быть CheckBox столбец в котором мы будем отмечать нужные нам строки
но как это сделать...
и как обработать каждый CheckBox
ну я думал что надо создать матрицу Object и там соответственно Integer String CheckBox(Boolean) (допустим)
но как - то не придумал как это сделать и как узнать какая строка в таблице у меня отмечена как выбраная(галочка в CheckBox)
помогите пожалуйста
заранее спасибо
Решение задачи: «Булевский столбец в таблице»
textual
Листинг программы
public class MyTable extends JFrame {
String title;
Object[][] data;
Object [] columnNames;
MyTable(Object[][] data, Object[] columnNames, String title){
this.title = title;
this.data = data.clone();
this.columnNames = columnNames.clone();
}
void drawTable() {
JFrame frame = new JFrame(title+" bool");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object[][] dataTemp = new Object[data.length][(data[0].length + 1)];
Object [] columnNamesTemp = new Object[(columnNames.length + 1)] ;
for(int i = 0; i < data.length; i++){
for(int j = 0; j< data[i].length; j++){
dataTemp[i][j] = data[i][j];
}
if(i%2==0)
dataTemp[i][columnNames.length] = new JCheckBox();
else
dataTemp[i][columnNames.length] = new Boolean(false);
//columnNamesTemp[i] = columnNames[i];
}
for(int i = 0; i < columnNames.length; i++)
columnNamesTemp[i] = columnNames[i];
columnNamesTemp [columnNames.length] = "";
JTable table = new JTable(dataTemp, columnNamesTemp);
JScrollPane scrollPane = new JScrollPane(table);
TableColumn column = null;
for (int i = 0; i < columnNamesTemp.length ; i++) {
column = table.getColumnModel().getColumn(i);
if (i == 2) {
column.setPreferredWidth(100); //third column is bigger
} else {
column.setPreferredWidth(50);
}
}
frame.getContentPane().add(scrollPane);
frame.setPreferredSize(new Dimension(450, 200));
frame.setMinimumSize(new Dimension(450, 200));
table.setFillsViewportHeight(true);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}