2012-06-19 6 views
2

У меня есть Uitable с данными, считываемыми из файла AScii.Выбор подходящих данных Matlab

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

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

Есть идеи?

ответ

2

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

set(myTable,`CellSelectionCallback`,@CallBack) 

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

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

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

+0

Здравствуйте Андрей, спасибо за ваш ответ. Когда я следил за вашими инструкциями, я получал индексы, но я хочу получить данные вместо указателей. –

+0

@SatyaVamsi, получение данных намного проще - используйте get (myTable, 'Data'). Отфильтруйте его по индексам в evt –

+0

Я пытаюсь отфильтровать данные, но я получал неправильные данные. Не могли бы вы помочь мне получить выбранные данные –

3

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

%# 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 

screenshot

Смежные вопросы