2014-01-21 18 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