Выбор подходящих данных Matlab

У меня есть Uitable с данными, считанными из файла AScii.

  1. Я хочу выбирать столбцы с помощью мыши, а также с помощью флажков. Я много пробовал, но не могу понять, как выбрать подходящий столбец с помощью мыши и получить эти данные.

  2. Также я пытаюсь вставить флажок в последнюю строку uitable, поэтому, когда пользователь устанавливает флажок, выбирается конкретный столбец.

Есть идеи?


person Satya Vamsi    schedule 19.06.2012    source источник


Ответы (2)


Вы должны отредактировать свойства CellSelectionCallback и CellEditCallback вашей таблицы.

   set(myTable,`CellSelectionCallback`,@CallBack)

Чтобы увидеть, какие столбцы/строки были выбраны, используйте данные о событии, которые вы получаете в своем обратном вызове.

  function CallBack(hObj,evt)   
      disp(evt);
  end

Насколько я знаю, невозможно узнать, какие столбцы выбраны в данный момент, когда обратный вызов не запущен.

person Andrey Rubshtein    schedule 19.06.2012
comment
Здравствуйте Андрей, Спасибо за ответ. Когда я следовал вашим инструкциям, я получал индексы, но я хочу получить данные вместо индексов. - person Satya Vamsi; 19.06.2012
comment
@SatyaVamsi, получить данные намного проще - используйте get(myTable,'Data'). Отфильтруйте его по индексам в evt - person Andrey Rubshtein; 19.06.2012
comment
Я пытаюсь отфильтровать данные, но получаю неверные данные. Не могли бы вы помочь мне, как получить выбранные данные? - person Satya Vamsi; 22.06.2012

Для обработки кликов по заголовкам столбцов необходимо перейти на недокументированную территорию:

%# old UITABLE (based on Swing JTable, instead of the new JIDE-based)
[hTable,hContainer] = uitable('v0', 'Parent',gcf, ...
    'Data',magic(7), 'ColumnNames',cellstr(num2str((1:7)','C%d'))');
set(hContainer, 'Units','normalized', 'Position',[0 0 1 1])

%# handle mouse clicks on table headers
jTableHeader = hTable.getTable().getTableHeader();
h = handle(jTableHeader, 'CallbackProperties');
set(h, 'MousePressedCallback',...
    @(src,evt) disp( src.columnAtPoint(evt.getPoint())+1 ))  %# zero-based index

скриншот

person Amro    schedule 19.06.2012