Edit: For R2023b and newer the solution by Jasmine (see answer below) is the way to go
----------------------------------------------------------------
Here's a solution with left click. Couldn't get right to work. More info at linked StackOverflow page above. Code copied here:
classdef wtf < handle
    properties
        h %struct, this was an appdesigner handle
        cm %context menu
    end
    methods
        function obj = wtf()
            h = struct;
            h.UIFigure = uifigure();
            h.UITable = uitable(h.UIFigure);
            obj.h = h;
            obj.h.UITable.SelectionChangedFcn = @obj.tableCall;
            %Some data ...
            s = struct;
            s.a = (1:4)';
            s.b = (5:8)';
            obj.h.UITable.Data = struct2table(s);
            %Our context menu
            cm = uicontextmenu(obj.h.UIFigure);
            m = uimenu(cm,'Text','Menu1');
            obj.cm = cm;
            %WTF ... without this we don't get a valid CurrentPoint
            obj.h.UIFigure.WindowButtonMotionFcn = @obj.mouseMove;
        end
        function tableCall(obj,x,y)
            cp = get (obj.h.UIFigure, 'CurrentPoint');
            open(obj.cm,cp(1),cp(2));
            selected_cell = y.Selection;
            %Now we can run something on the context menu
            %that targets the selected cell
        end
        function mouseMove(obj,x,y)
            %we could store a point here
        end
    end
end


