我有一個JSlider的0最小值及100最大值當JSlider的第一次啓動,則該值爲0JSlider的 - 擊可以點去朝那個方向
現在,當我點擊我的鼠標在50,甚至20或100,JSlider不會移動到我點擊的位置。它只是向右跳一點點。
我該如何做到這一點,以便我點擊任何東西時的價值?
我有一個JSlider的0最小值及100最大值當JSlider的第一次啓動,則該值爲0JSlider的 - 擊可以點去朝那個方向
現在,當我點擊我的鼠標在50,甚至20或100,JSlider不會移動到我點擊的位置。它只是向右跳一點點。
我該如何做到這一點,以便我點擊任何東西時的價值?
這是一個能夠滿足你需要的類的開始。
總的想法是檢測用戶點擊的位置並計算必要的值偏移以匹配新的滑塊位置。
// 'E' stands for enhanced
public class EJSlider extends JSlider {
public EJSlider() {
super();
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
double percent = p.x/((double) getWidth());
int range = getMaximum() - getMinimum();
double newVal = range * percent;
int result = (int)(getMinimum() + newVal);
setValue(result);
}
});
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new EJSlider());
f.pack();
f.setVisible(true);
}
}
只需運行該示例。滑塊將跳到您點擊鼠標的任何位置。這尚未經過徹底測試,但不適用於垂直滑塊。
這個類似的解決方案將簡單地將我的自定義MouseListener
添加到任何JSlider
你想要的功能。
(注意,我知道它還不完美,但它是一個很好的開始。)
爲什麼要實現非標準行爲?潛在的混淆你的用戶..保持鼠標按下,拇指將最終到達鼠標 – kleopatra