# JSlider-Schieberegler



## igel (14. Jul 2005)

Hallo, 
...und hier mein nächstest Problem!

Und zwar ist es meine Aufgabe mit einem rechts Button einen Schieberegler so zu verändern, 
dass wenn ich auf den Button klicke, der Regler einen Tick nach rechts springt. 
Wie kann ich das realisieren. 

Danke für die Hilfe...


----------



## The_S (14. Jul 2005)

Könntest du dein Problem genauer definieren? Ist dein Problem die GUI, das auf Knopfdruck was passiert, das Weitersetzen des Schiebereglers ...  :?:


----------



## igel (14. Jul 2005)

Mein Problem ist, 
dass ich aus JLabel einen Button konstruieren muss, der beim mouseclick ein ActionEvent verschickt.
Den Button habe ich soweit feritg. 
Jetzt soll beim Klicken auf meinen Button der Regler einen Tick nach rechts springen. Nicht, wenn ich dirket auf 
die Leiste klicke. Ich habe aber keine Ahnung wie ich an den Regler komme, bzw. ich das mit dem Button "verbinde".
Verstanden?


----------



## The_S (14. Jul 2005)

Ein kurzer Blick in die API hat mir verraten, dass du den Status des JSliders mit "setValue()" verändern kannst :wink:


----------



## thomas.g (14. Jul 2005)

mal ne Frage zum JSlider:
Kann man eigentlich den Zeiger eines JSliders durch ein eigenes Bild ersetzen?
thx


----------



## Roar (14. Jul 2005)

alzheimer? http://www.java-forum.org/de/viewtopic.php?t=19806


----------



## thomas.g (14. Jul 2005)

oh mist, danke, habs vergessen ....  :bahnhof:


----------



## igel (15. Jul 2005)

Ich komme immer noch nicht klar. 
Ich krieg es nicht hin, dass mein Link- und Recht-Button den Regler von JSlider bewegen. 
Hier ist mein Code. Vielleicht kann einer helfen...

Code meines AutoRepeatButtons

```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;

public class AutoRepeatButton extends JLabel implements ActionListener{
	private Timer zeit,zeit1, zeit2;
	private int t1, t2;
	public Timer time=new Timer(0,this);
	   				  
   //Konstruktor
	public AutoRepeatButton(String text, ImageIcon image,int delay1, int delay2){
		super(text);
		setIcon(image);
		t1=delay1;//500 msec übergeben
	    t2=delay2;//200 msec übergeben
	    addMouseListener(new MyMouseListener());
	    addActionListener(new HinzuListener());
	    removeActionListener(new ZurueckListener());
	    
	    time.setInitialDelay(t1); //Setzt die Millisekunden, bis das erste Event ausgelöst wird
        time.setDelay(t2);//Setzt die Millisekunden, zwischen denen jeweils ein Event ausgelöst wird

	 }
    /***Methoden***/
    public void startEvent(){
    	System.out.println("zeit1");
    	time.start(); //Startet alle 200 msec ein ActionEvent	
    }

    public void stopEvent(){
        time.stop();      	
    }
    /*** set und get Methoden für Zeitverzögerung***/
    public void set_t1(int i)
    {
        t1 = i;
        time.setInitialDelay(t1);
    }

    public void set_t2(int i)
    {
        t2 = i;
        time.setDelay(t2);
    }

    public int get_t1()
    {
        return t1;
    }

    public int get_t2()
    {
        return t2;
    }
    
    public void actionPerformed(ActionEvent evt) {
    	ActionListener al; 
    	System.out.println("zeit2"); 
    }
    public void addActionListener(ActionListener e){
    	
    }
    public void removeActionListener(ActionListener el){
    
    }

	 /***innere Klassen***/
	public class MyMouseListener extends MouseAdapter {
        public void mousePressed(MouseEvent m) {
        	setBorder( BorderFactory.createLoweredBevelBorder() );
        	startEvent(); //Zeit wird gezählt
        }
        public void mouseReleased(MouseEvent e) {
        	setBorder( BorderFactory.createRaisedBevelBorder() );
        	stopEvent();
        	
        }
     } 

	public class HinzuListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			System.out.println("Berührt");
		}
	
	}
	public class ZurueckListener implements ActionListener{
		public void actionPerformed(ActionEvent arg0) {
			//funktion aufrufen zum verschieben des JSilder
		}
	}
	
	/***Ende innere Klassen***/
}
/***Ende AutoRepeatButton Klasse***/
```

Code für meine JSlider

```
public class MainGUITest {
	 private JFrame frame=new JFrame();
     public  JSlider slider;
     public  AutoRepeatButton button1, button2;
     public int value;
     static DefaultBoundedRangeModel model_one = new DefaultBoundedRangeModel();		
	 
	 public MainGUITest(){ 	
	 	//Layout
	 	FlowLayout flow = new FlowLayout(FlowLayout.CENTER);
	    frame.getContentPane().setLayout(flow );
	    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );	
	    //Button anlegen
	    button1 = new AutoRepeatButton("  links   ",new ImageIcon("left.png"), 500, 200); 
	    button1.setBorder( BorderFactory.createRaisedBevelBorder() );//rahmen um AutoButton
	    button1.addActionListener(button1);
	    button2 = new AutoRepeatButton("  rechts  ",new ImageIcon("right.png"), 500, 200);
	    button2.setBorder( BorderFactory.createRaisedBevelBorder() );
	    frame.getContentPane().add( button1 );  
	    frame.getContentPane().add( button2 );  
	    slider = new JSlider( 0, 50, 25 );//0-min, 100-max, 25-value-mittig
	    frame.getContentPane().add( slider );
	    slider.setPaintTicks(true); //markierungen werden gesetzt
	    slider.setMajorTickSpacing( 10 );
	    slider.setMinorTickSpacing( 2 );
	    
	    value=slider.getValue();
	   
	    button1.addActionListener(button1); 
	    System.out.println(value);
	    
	    frame.pack();
	    frame.setVisible(true);
	  }
	
	public static void main(String[] args){
	 	 MainGUITest aMainGUI = new MainGUITest();
	 }	
}
```


----------

