Question

J'ai un JSlider qui montre la taille de pari (pour un jeu de poker) Je suis en train de réaliser l'effet que lorsqu'un clic de souris se produit le curseur saute vers l'avant d'un montant de pari (soit une grande quantité aveugle) plutôt que incrémenter par un. Si le clic de la souris arrive à la gauche de la barre, je veux qu'il décrémenté d'un montant fixe incrément d'autre. Je regardais en attacher un écouteur de souris, mais je ne sais pas comment je peux utiliser l'événement pour savoir de quel côté de la barre de la souris a été cliqué.

Toutes les idées?

Était-ce utile?

La solution

Vous avez juste besoin de changer votre point de vue sur le problème.

Ne pas afficher les clics comme étant la « gauche » ou « droite » (ci-dessous ou au-dessus) la mise actuelle.

Au contraire, vous stockez simplement la vieille tique, et regardez ce que la nouvelle tique est. La différence vous dira si l'utilisateur a essayé d'augmenter (delta positif) ou diminuer (delta négatif).

Ensuite, vous pouvez augmenter votre quantité désirée « pari fixe ».

Autres conseils

Je pense que vous avez besoin d'écrire une interface utilisateur personnalisée pour cela. Cela devrait vous aider à démarrer:

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 );
     }
}

Voici comment je y le 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
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top