2016-12-04 6 views
0

Я хочу создать горизонтальную полосу прокрутки с максимальным значением, равным 2 (он должен позволять только выбирать 0, 1 или 2 в качестве значения), но ручка невидима, если значение меньше 11.JScrollBar: ручка не видна с малыми максимальными значениями

scrlLineDist = new JScrollBar(); 
    scrlLineDist.setBlockIncrement(1); 
    scrlLineDist.addAdjustmentListener(new AdjustmentListener() { 
     public void adjustmentValueChanged(AdjustmentEvent e) { 
      System.out.println(scrlLineDist.getValue()); 
     } 
    }); 
    GridBagConstraints gbc_scrlLineDist = new GridBagConstraints(); 
    gbc_scrlLineDist.insets = new Insets(0, 0, 5, 0); 
    gbc_scrlLineDist.fill = GridBagConstraints.HORIZONTAL; 
    gbc_scrlLineDist.gridx = 0; 
    gbc_scrlLineDist.gridy = 3; 
    panel_4.add(scrlLineDist, gbc_scrlLineDist); 
    scrlLineDist.setMaximum(2); 
    scrlLineDist.setToolTipText(""); 
    scrlLineDist.setOrientation(JScrollBar.HORIZONTAL); 

При изменении значения maximum до 12, он работает так, как я хочу (видна кнопка, значение [0,2]). Почему это происходит?

scrlLineDist = new JScrollBar(); 
    scrlLineDist.setBlockIncrement(1); 
    scrlLineDist.addAdjustmentListener(new AdjustmentListener() { 
     public void adjustmentValueChanged(AdjustmentEvent e) { 
      System.out.println(scrlLineDist.getValue()); 
     } 
    }); 
    GridBagConstraints gbc_scrlLineDist = new GridBagConstraints(); 
    gbc_scrlLineDist.insets = new Insets(0, 0, 5, 0); 
    gbc_scrlLineDist.fill = GridBagConstraints.HORIZONTAL; 
    gbc_scrlLineDist.gridx = 0; 
    gbc_scrlLineDist.gridy = 3; 
    panel_4.add(scrlLineDist, gbc_scrlLineDist); 
    scrlLineDist.setMaximum(12); 
    scrlLineDist.setToolTipText(""); 
    scrlLineDist.setOrientation(JScrollBar.HORIZONTAL); 

ответ

1

То, что вы ищете, вероятно, JSlider, не JScrollbar.

// orientation, min, max, initial value 
final JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 0, 2, 1); 
slider.setSnapToTicks(true); // only allow 0, 1, 2 and not in between 
slider.setPaintTicks(true); // paint ticks at tick spacing interval 
slider.setMajorTickSpacing(1); // set interval to 1 
slider.setPaintLabels(true); // show labels on ticks 

Вместо AdjustmentListener, добавьте ChangeListener в свой слайдер, например, так:

slider.addChangeListener(new ChangeListener() { 

    @Override 
    public void stateChanged(ChangeEvent e) { 
     // only output when value is set (when the mouse is released from the knob) 
     // remove this if statement if you would like output whenever the knob is moved 
     if(!slider.getValueIsAdjusting()) { 
      System.out.println(slider.getValue()); 
     } 
    } 

});  

Для получения дополнительной информации о JSlider с, а также официальный учебник, проверить The Java™ Tutorials - How to Use Sliders

+0

Упс, вы являются правильными. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^