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

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

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

  • 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, таким образом, закрашенная фигура может стать текущим объектом. Когда закрашенная фигура становится текущим объектом, она выполняет свою кнопку вниз коллбэк.