Search code examples
javajscrollbar

Set JScrollBar value as double?


I am trying to implement a program using MVC design pattern that allows users to enter values into two JTextFields and these values will then compute and display a final value in a JLabel. See code snippet below.

    public void update(Observable o, Object arg){
    if (o instanceof ShannonsModel){
        ShannonsModel model = (ShannonsModel)o;

        bandwidthJTextField.setText(String.valueOf(model.getBandwidth()));          
        signalToNoiseJTextField.setText(String.valueOf(model.getSignalToNoise()));          
        maxDataRateJLabel.setText(String.valueOf(model.getMaximumDataRate()));

    }
}

I have this working but I am now trying to implement the same strategy but I want to use JScrollBars instead of JTextFields to set the values. The bandwidth and signalToNoise are double values. Is there a way to do this?

This is what I have attempted:

    public void update(Observable o, Object arg){
    if (o instanceof ShannonsModel){
        ShannonsModel model = (ShannonsModel)o;
        bandwidthJScrollBar.setValue(Integer.parseInt(String.valueOf(model.getBandwidth())));
        signalToNoiseJScrollBar.setValue(Integer.parseInt(String.valueOf(model.getSignalToNoise())));
        maxDataRateJLabel.setText(String.valueOf(model.getMaximumDataRate()));
    }
}

Solution

  • So, basically, you're asking how to convert a double value to an int value, right?

    This truncates:

    int valueAsInt = (int) model.getBandwidth();
    

    And this rounds:

    int valueAsInt = (int) Math.round(model.getBandwidth());