الحصول على شريط JSLIDER للتحرك على الحدث انقر فوق الماوس
-
18-09-2019 - |
سؤال
لدي JSLIDER التي تظهر أحجام الرهان (للحصول على لعبة البوكر) أحاول تحقيق التأثير أنه عند حدوث نقرة الماوس، يقفز المنزلق إلى الأمام بمبلغ الرهان (أي مبلغ أعمى كبير) بدلا من زيادة واحدة. إذا حدث النقر فوق الماوس إلى يسار الشريط، فأنا أريد ذلك أن يقلل من مبلغ ثابت آخر. نظرت إلى إرفاق المستمع الماوس، لكن لا أعرف كيف يمكنني استخدام الحدث لمعرفة أي جانب من الشريط، تم النقر فوق الماوس.
أيه أفكار؟
المحلول
تحتاج فقط إلى تغيير وجهة نظرك حول المشكلة.
لا ترى النقرات على أنها "اليسار" أو "اليمين" (أدناه أو أعلى) الرهان الحالي.
بدلا من ذلك، يمكنك ببساطة تخزين القراد القديم، وإلقاء نظرة على ما هو القراد الجديد. سيخبرك الفرق إذا حاول المستخدم زيادة (دلتا إيجابية) أو نقصان (دلتا سلبية).
ثم يمكنك زيادة حسب مبلغ "الرهان الثابت المرغوب".
نصائح أخرى
أعتقد أنك بحاجة إلى كتابة واجهة مستخدم مخصصة لهذا. هذا يجب عليك ان تبداء:
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import javax.swing.plaf.metal.*;
public class SliderScroll extends JFrame
{
public SliderScroll()
{
final JSlider slider = new JSlider(0, 50, 20);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);
slider.setExtent(5);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
getContentPane().add( slider );
slider.setUI( new MySliderUI() );
}
class MySliderUI extends MetalSliderUI
{
public void scrollByUnit(int direction)
{
synchronized(slider)
{
int oldValue = slider.getValue();
int delta = (direction > 0) ? 10 : -5;
slider.setValue(oldValue + delta);
}
}
}
public static void main(String[] args)
{
JFrame frame = new SliderScroll();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
}
هذه هي الطريقة التي حققها MouseClickevent
MoveSlider = new JSlider(JSlider.HORIZONTAL, 0, 0, 0);
MoveSlider.addMouseListener(new MouseListener()
{
public void mousePressed(MouseEvent event) {
//Mouse Pressed Functionality add here
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
});