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

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