четверг, 27 марта 2014 г.

Себе на заметку: Определение номера колонки в JTable по которой произошол клик мышью.

В одном из проектов понадобилось переключать внутрению логику обработки редактирования данных в JTable в зависимости от клика на колонки.
В результате получилось следующее :

 JTable grid.getTableHeader().addMouseListener(new HeaderClick()); 

вешаем слушателя на заголовок таблицы.

класс HeaderClick выглядит следующим образом:

class HeaderClick implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent me) {
            if (me.getSource() instanceof JTableHeader){
                TableColumnModel cl=((JTableHeader) me.getSource()).getColumnModel();
                if (cl.getColumn(cl.getColumnIndexAtX(me.getX())).getHeaderValue().toString().equals("Брутто")){
                    Glu.setCFG("CardSpecDirection", "brutto");
                    cl.getColumn(cl.getColumnIndexAtX(me.getX())).setHeaderRenderer(null);
                   
                }

            }

        }
 номер колонки по заголовку которой мы кликнули получаем с помошью -
cl.getColumnIndexAtX(me.getX())  т.е. me.getX() - это положение мыши и по положению мыши мы получаем номер колонки в заголовке.