package com.ui;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
public class TestJtable extends JFrame{
private JCheckBox jCheckBox = new JCheckBox();
private Map<Integer,JCheckBox> checkBoxes = new HashMap<Integer, JCheckBox>();
final TestJtable testJtable = this;
TableModel tableModel = null;
Object[][] datas = {
{"","a","b","c"},
{"","a1","b1","c1"},
{"","a2","b2","c2"},
{"","a3","b3","c3"},
};
final String[] column = {"checkBox","C_1" , "C_2","C_3"};
public TestJtable(){
this.setBounds(300, 300, 300, 300);
layoutCompent();
this.setVisible(true);
}
public void layoutCompent(){
tableModel = new DefaultTableModel(datas,column);
final JTable jtable = new JTable(tableModel);
DefaultCellEditor cde = new DefaultCellEditor(new JCheckBox()){
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if(value != null && value instanceof JCheckBox){
return (Component) value;
}
return super.getTableCellEditorComponent(table, value, isSelected, row, column);
}
};
jtable.getColumn("checkBox").setCellEditor(cde);
jtable.getColumn("checkBox").setCellRenderer(new TableCellRenderer(){
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JCheckBox jcb = checkBoxes.get(row);
if(jcb == null){
jcb = new JCheckBox();
}
if(value != null ){
jcb.setSelected(new Boolean(value.toString()));
return jcb;
}
return jcb;
}
});
jtable.getColumn("checkBox").setMaxWidth(20);
jtable.addMouseListener(new MouseAdapter(){
int dragStartRow = 0;
int dragEndRow = 0;
public void mouseClicked(MouseEvent e) {
int selectAll = jtable.getSelectedColumn();
if(selectAll == 0){
for(int i =1 ; i<3 ; i++){
Boolean isSelect = new Boolean(jtable.getModel().getValueAt(i, 0).toString());
jtable.getModel().setValueAt(!isSelect, i, 0);
System.out.println(isSelect);
}
}
System.out.println("cc"+jtable.getSelectedRow());
}
@Override
public void mousePressed(MouseEvent e) {
dragStartRow = jtable.rowAtPoint(e.getPoint());
System.out.println("dragStartRow : "+dragStartRow);
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
dragEndRow = jtable.rowAtPoint(e.getPoint());
System.out.println("dragEndRow:"+dragEndRow);
for(int i = 0 ; i<datas.length;i++){
jtable.getModel().setValueAt("false", i, 0);
}
for(int i = dragStartRow;i<=dragEndRow;i++){
jtable.getModel().setValueAt("true", i, 0);
}
System.out.println("mouseReleased");
}
});
this.add(jtable);
}
public static void main(String[] args) {
TestJtable tj = new TestJtable();
}
}