Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Java slider not Responding

Asked by Lawson Hoover on 12 Dec 2012

The slider is saved as S.sl1 and I convert it to sl1 and output it. I then convert it to a java slider in another function with :

   jScrollBar = findjobj(sl1);
   jScrollBar.AdjustmentValueChangedCallback = @updateplot;

Then the call back function is:

function updateplot(sl1,ht,funcNum)
x = get(sl1,'Value');
Beam.Location = x;
switch funcNum
    case funcNum == 1
        y = Cantilieverd_Point(Beam);
        set(ht,'ydata',y);
        drawnow;
      case funcNum == 2
          y = Simple_Point(Beam);
          set(ht,'ydata',y);
          drawnow;
  end

end

Where ht is the plot that is being updated and the ' y = ' is another function which creates the y value. When I run this it does not return an error, but it also does absolutely nothing to the graph. I want it to continuously update the graph based off of the slider value.

5 Comments

Malcolm Lidierth on 12 Dec 2012

How does updateplot know the value of funcNum? ht is an EventData object - it has no 'ydata' property. Is this a slider or a scrollBar.

The callback can not be being called - or you would see errors.

A more complete code example is needed to be more helpful.

Lawson Hoover on 12 Dec 2012

@ Matt Fig, well the Listener did work in a way. It would update once and then not run again. To tell you the truth I might just move on past this and come back to it later. I am still very new to MATLAB and still trying to get a hold of the concepts.

Malcolm Lidierth on 12 Dec 2012

@Lawson That is a vital bit of info. The callback is evaluated once, throws an exception and gets removed by MATLAB. You need something like:

jScrollBar.AdjustmentValueChangedCallback = {@updateplot, ht, funcNum};

The callback should then be declared as:

function updateplot(sl1,EvenData, ht, funcNum)

sl1 and EventData are added automatically to the inputs by MATLAB>

Lawson Hoover

Products

No products are associated with this question.

1 Answer

Answer by Jan Simon on 12 Dec 2012

There are several problems in your code:

1. Here the callback is defined with no inputs:

jScrollBar.AdjustmentValueChangedCallback = @updateplot;

But in the definition of the callback function, 3 inputs are required.

2. Look at the documentation of switch/case again. The term "funcNum==1" is evaluated to either true or false, but you want to switch for the value 1 or 2. Therefore you need:

switch funcNum
  case 1   % Not "funcNum == 1"
    ...

I suggest not to use a Java slider, but the standard Matlab sliders. You cann attach a listener to them also: http://www.mathworks.com/support/solutions/en/data/1-3SR0YI/index.html?product=ML&solution=1-3SR0YI

0 Comments

Jan Simon

Contact us