2014-01-21 2 views
0

Мне нужно использовать JSlider с получением ввода вживую, что означает, что он вернет вход без нажатия любой кнопки. У меня есть эта часть кода для слайдера:получить вход и изменения JSlider

JPanel panel = new JPanel(); 
      JSlider js = new JSlider(JSlider.VERTICAL, 0, 20, 10); 
      js.setMajorTickSpacing(2); 
      js.setPaintTicks(true); 
      Hashtable labelTable = new Hashtable(); 
      labelTable.put(new Integer(js.getMinimum()), new JLabel("x0")); 
      labelTable.put(new Integer((js.getMinimum() + js.getMaximum())/2), new JLabel("x1")); 
      labelTable.put(new Integer(js.getMaximum()), new JLabel("x2")); 
      js.setLabelTable(labelTable); 
      js.setPaintLabels(true); 
      panel.add(js); 
      int result = JOptionPane.showConfirmDialog(null, panel, "choose size", JOptionPane.YES_OPTION); 

Возможно ли это? Я думал, используя actionListener, но мне это не удалось.

ответ

3

Это возможно, используя ChangeListener, например

slider.addChangeListener(new ChangeListener() { 

    @Override 
    public void stateChanged(ChangeEvent e) { 
     JSlider slider = (JSlider) e.getSource(); 
     int value = slider.getValue(); 
     ... 
    } 
}); 
+0

Проблема заключается в том, что она не обновляется, пока я изменить ползунок, но только после нажатия кнопки (JOptionPane.YES_OPTION). – TJR

+0

Затем не используйте диалоговое окно 'JOptionPane', а затем просто вставьте панель в обычный пользовательский интерфейс. Диалог блокируется до тех пор, пока не будет нажата кнопка :) – Reimeus

+0

Извините, это мой первый проект, как это сделать? – TJR

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