Захватывание клики мыши

Свойства, которые управляют ответом на клики мыши

Существует два свойства, которые определяют, если и как объекты отвечают на клики мыши:

  • PickableParts — Определяет, захватывает ли объект клики мыши

  • HitTest — Определяет, может ли объект ответить на клик мыши, это получает или передает нажатие кнопки своему самому близкому предку.

Объекты передают нажатие кнопки через иерархию объектов до достижения объекта, который может ответить.

Программирование ответа на клик мыши

Когда объект получает и отвечает на клик мыши, объект:

  • Выполняется его кнопка вниз функционируют в ответ на мышь, щелкают левой кнопкой — Если объект задает коллбэк для ButtonDownFcn свойство, MATLAB® выполняет этот коллбэк.

  • Контекстное меню отображений в ответ на мышь щелкает правой кнопкой — Если объект задал контекстное меню с помощью UIContextMenu свойство, MATLAB вызывает это контекстное меню.

Примечание

Фигуры не имеют PickableParts свойство. Фигуры выполняют функции обратного вызова кнопки независимо от установки их HitTest свойство.

Примечание

Если оси PickableParts свойство установлено в 'none', дочерние элементы осей не могут захватить клики мыши. В этом случае все клики мыши получены фигурой.

Комбинации Значений PickablePart/HitTest

Используйте PickableParts и HitTest свойства реализовать следующие поведения:

  • Объект, по которому кликают, захватывает мышь нажатие кнопки и отвечает кнопкой вниз коллбэк или контекстное меню.

  • Объект, по которому кликают, захватывает мышь нажатие кнопки и передает клик мыши одному из его предков, которые могут ответить кнопкой вниз коллбэк или контекстное меню.

  • Объект, по которому кликают, не захватывает мышь нажатие кнопки. Клик мыши может быть получен объектами позади объекта, по которому кликают.

Эта таблица суммирует ответ на клик мыши на основе значений свойств.

Оси PickablePartsPickableParts HitTest Результат клика мыши

видимый/весь

видимый (значение по умолчанию)

на (значении по умолчанию)

Нажатие на видимые части объекта выполняет кнопку вниз коллбэк или вызывает контекстное меню

видимый/весь

все

на

Нажатие на какую-либо часть объекта, даже если не видимый, делает объектный ток и выполняет кнопку вниз коллбэк или вызывает контекстное меню

visible/all/none

'none'

вкл\выкл

Нажатие на объект никогда не делает его текущим объектом и никогда не может выполнять кнопку вниз коллбэк или вызывать контекстное меню

'none'

visible/all/none

вкл\выкл

Нажатие на любые дочерние объекты осей никогда не выполняет кнопку вниз коллбэк или вызывает контекстное меню

MATLAB ищет предков, использующих Parent свойство каждого объекта до нахождения подходящего предка или достижения фигуры.

Передача клика мыши иерархия

Рассмотрите следующую иерархию объектов и их PickableParts и HitTest настройки свойства.

Этот код создает иерархию:

function pickHit
f = figure;
ax = axes;
p = patch(rand(1,3),rand(1,3),'g');
l = line([1 0],[0 1]);
set(f,'ButtonDownFcn',@(~,~)disp('figure'),...
   'HitTest','off')
set(ax,'ButtonDownFcn',@(~,~)disp('axes'),...
   'HitTest','off')
set(p,'ButtonDownFcn',@(~,~)disp('patch'),...
   'PickableParts','all','FaceColor','none')
set(l,'ButtonDownFcn',@(~,~)disp('line'),...
   'HitTest','off')
end

Нажатие на строку

Щелкните левой кнопкой по линии:

  • Линия становится текущим объектом, но не может выполнить его ButtonDownFcn коллбэк, потому что его HitTest свойством является off.

  • Линия передает хит самому близкому предку (родительские оси), но оси не могут выполнить его ButtonDownFcn коллбэк, таким образом, оси передает хит фигуре.

  • Фигура может выполнить его коллбэк, таким образом, MATLAB отображает figure в Командном окне.

Нажатие на закрашенную фигуру

Закрашенная фигура FaceColor none. Однако закрашенная фигура PickableParts all, таким образом, можно выбрать закрашенную фигуру путем нажатия на пустую поверхность и ребро.

Закрашенная фигура HitTest свойством является on таким образом, закрашенная фигура может стать текущим объектом. Когда закрашенная фигура становится текущим объектом, она выполняет свою кнопку вниз коллбэк.