java - Convert every value into milliseconds -


i have spinner want use configure time task. in case cant set numeric value spinner , combobox set in hours or in minutes convert value:

  import java.util.concurrent.timeunit; import javafx.application.application; import static javafx.application.application.launch; import javafx.beans.value.changelistener; import javafx.beans.value.observablevalue; import javafx.scene.scene; import javafx.scene.control.combobox; import javafx.scene.control.spinner; import javafx.scene.control.spinnervaluefactory; import javafx.scene.layout.hbox; import javafx.stage.stage;  public class mainapp extends application {     @override     public void start(stage stage) throws exception     {         spinner spinner = new spinner();         spinner.setvaluefactory(new spinnervaluefactory.integerspinnervaluefactory(0, 10000));         spinner.seteditable(true);          combobox comb = new combobox();         comb.getitems().addall(             "milliseconds",             "seconds",             "minutes",             "hours",             "days"         );         comb.getselectionmodel().selectfirst();          spinner.valueproperty().addlistener(new changelistener<number>()         {             @override             public void changed(observablevalue<? extends number> ov, number old_val, number new_val)             {                 string value = comb.getselectionmodel().getselecteditem().tostring();                  long convertedvalue = 0;                  switch (integer.parseint(spinner.getvalue().tostring()))                 {                     case 1:                         value = "milliseconds";                         convertedvalue = integer.parseint((string) spinner.getvalue());                          break;                     case 2:                         value = "seconds";                         convertedvalue = timeunit.seconds.tomillis((long) spinner.getvalue());                          break;                     case 3:                         value = "minutes";                         convertedvalue = timeunit.minutes.tomillis((long) spinner.getvalue());                          break;                     case 4:                         value = "hours";                         convertedvalue = timeunit.hours.tomillis((long) spinner.getvalue());                          break;                     case 5:                         value = "days";                         convertedvalue = timeunit.days.tomillis((long) spinner.getvalue());                          break;                  }                  system.out.println(">>>>> " + convertedvalue);             }         });          hbox hb = new hbox();         hb.getchildren().addall(spinner, comb);         hb.setspacing(50);          scene scene = new scene(hb);          stage.settitle("javafx , maven");         stage.setscene(scene);         stage.show();     }      public static void main(string[] args)     {         launch(args);     }  } 

spinner keep value in milliseconds based on combo box selection need convert example 5 minutes milliseconds. how can implement listener? , of course when have 5000 milliseconds display them minutes.

how one? guess main mistake in code-example inside switch-statement switch spinner value instead combobox-value. example corrrects problem , in system.out.println(...) @ end can see original value , converted value printed. can use further in application.

edit: added hint in comment. can enter time in milliseconds, seconds, ... (remember press enter - otherwise event not triggered) after combobox changed changed value written spinner - want want enlarge maximumvalue in spinner allow higher entries in milliseconds). based on integer-calculation. rounding adjustments time lost.

import java.util.concurrent.timeunit;  import javafx.application.application; import javafx.beans.value.changelistener; import javafx.beans.value.observablevalue; import javafx.scene.scene; import javafx.scene.control.combobox; import javafx.scene.control.spinner; import javafx.scene.control.spinnervaluefactory; import javafx.scene.layout.hbox; import javafx.stage.stage;  public class mainapp extends application {      long    milliseconds;     string  unitatlastchange;     int     originalvalue;      @override     public void start(stage stage) throws exception {         spinner<integer> spinner = new spinner<>();         spinner.setvaluefactory(new spinnervaluefactory.integerspinnervaluefactory(0, 10000));         spinner.seteditable(true);          combobox<string> comb = new combobox<>();         comb.getitems().addall("milliseconds", "seconds", "minutes", "hours", "days");         comb.getselectionmodel().selectfirst();         this.unitatlastchange = comb.getselectionmodel().getselecteditem();          spinner.valueproperty().addlistener(new changelistener<integer>() {             @override             public void changed(observablevalue<? extends integer> ov, integer old_val, integer new_val) {                 mainapp.this.unitatlastchange = comb.getselectionmodel().getselecteditem();                 mainapp.this.originalvalue = new_val.intvalue();                  switch (mainapp.this.unitatlastchange) {                     case "milliseconds":                         mainapp.this.milliseconds = new_val.intvalue();                          break;                     case "seconds":                         mainapp.this.milliseconds = timeunit.seconds.tomillis(new_val.intvalue());                          break;                     case "minutes":                         mainapp.this.milliseconds = timeunit.minutes.tomillis(new_val.intvalue());                          break;                     case "hours":                         mainapp.this.milliseconds = timeunit.hours.tomillis(new_val.intvalue());                          break;                     case "days":                         mainapp.this.milliseconds = timeunit.days.tomillis(new_val.intvalue());                         break;                     default:                         throw new runtimeexception("error - wrong value");                  }                  system.out.println("converted: " + mainapp.this.originalvalue + " " + mainapp.this.unitatlastchange + " original: "                         + mainapp.this.milliseconds + " milliseconds");             }         });          comb.valueproperty().addlistener(new changelistener<string>() {              @override             public void changed(observablevalue<? extends string> observable, string oldvalue, string newvalue) {                 switch (newvalue) {                     case "milliseconds":                         mainapp.this.originalvalue = (int) mainapp.this.milliseconds;                          break;                     case "seconds":                         mainapp.this.originalvalue = (int) timeunit.milliseconds.toseconds(mainapp.this.milliseconds);                          break;                     case "minutes":                         mainapp.this.originalvalue = (int) timeunit.milliseconds.tominutes(mainapp.this.milliseconds);                          break;                     case "hours":                         mainapp.this.originalvalue = (int) timeunit.milliseconds.tohours(mainapp.this.milliseconds);                          break;                     case "days":                         mainapp.this.originalvalue = (int) timeunit.milliseconds.todays(mainapp.this.milliseconds);                         break;                     default:                         throw new runtimeexception("error - wrong value");                  }                 spinner.getvaluefactory().setvalue(integer.valueof(mainapp.this.originalvalue));             }         });          hbox hb = new hbox();         hb.getchildren().addall(spinner, comb);         hb.setspacing(50);          scene scene = new scene(hb);          stage.settitle("javafx , maven");         stage.setscene(scene);         stage.show();      }      public static void main(string[] args) {         launch(args);     }  } 

Comments