الحصول على شريط JSLIDER للتحرك على الحدث انقر فوق الماوس

StackOverflow https://stackoverflow.com/questions/2402655

سؤال

لدي 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
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top