コード例 #1
0
  /**
   * Creates integer or float number selector depending on precision, see {@link #setPrecision(int)}
   *
   * @param name may be null
   */
  public NumberSelector(
      NumberSelectorStyle style,
      final Sizes sizes,
      String name,
      float initialValue,
      float min,
      float max,
      float step,
      int precision) {
    this.current = initialValue;
    this.max = max;
    this.min = min;
    this.step = step;

    valueText =
        new VisValidatableTextField() {
          @Override
          public float getPrefWidth() {
            return sizes.numberSelectorFieldSize;
          }
        };

    valueText.setProgrammaticChangeEvents(false);
    setPrecision(precision);
    valueText.setText(valueOf(current));

    VisTable buttonsTable = new VisTable();
    VisImageButton upButton = new VisImageButton(style.up);
    VisImageButton downButton = new VisImageButton(style.down);

    buttonsTable.add(upButton).height(sizes.numberSelectorButtonSize).row();
    buttonsTable.add(downButton).height(sizes.numberSelectorButtonSize);

    labelCell = add(new VisLabel(""));
    setSelectorName(name);

    add(valueText).fillX().expandX().height(sizes.numberSelectorButtonSize * 2).padRight(1);
    add(buttonsTable).width(sizes.numberSelectorButtonsWidth);

    addButtonsListeners(upButton, downButton);
    addTextFieldListeners();
  }