Domanda

Ho un JSlider che mostra le puntate (per una partita di poker) Sto cercando di ottenere l'effetto che quando si verifica un clic del mouse il cursore salta in avanti da un importo della puntata (vale a dire una grande quantità blind) piuttosto che con incrementi di uno. Se il clic del mouse accade alla sinistra della barra voglio che diminuire di una quantità fissa altro incremento. Ho guardato in collegamento di un listener del mouse, ma non so come posso usare l'evento per scoprire su quale lato della barra del mouse è stato cliccato.

Tutte le idee?

È stato utile?

Soluzione

Hai solo bisogno di cambiare il vostro punto di vista sul problema.

Non visualizzare gli scatti come al o 'destra' 'sinistra' (al di sotto o al di sopra) la puntata corrente.

Piuttosto, è sufficiente memorizzare il vecchio segno di spunta, e guardare a ciò che il nuovo tick è. La differenza vi dirà se l'utente ha cercato di aumentare (delta positivo) o diminuire (delta negativo).

Poi si può incrementare dal vostro 'scommessa fisso' importo desiderato.

Altri suggerimenti

Credo che hai bisogno di scrivere un'interfaccia utente personalizzata per questo. Questo dovrebbe iniziare:

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

Questo è come mi realizzare il 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
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top