# JSlider mit Double Werten



## joni (1. Jun 2010)

Hallo zusammen,

ich habe da schon ein Thread gefunden aber ich komm da irgendwie nicht klar.

Ich habe bis jetzt einen jslider und ne jtextpane und versuche dass der jslider diese wiedergegebene Werte in Double darstellt,

ein auszug aus dem geschlossenen Thread:


> ch würde an dem jslider gar nix herumbasteln und statt dessen mir die auflösung seiner steps überlegen. das könnte dann zum beispiel so aussehen:
> 
> minimum: 0.1
> maximum: 1.0
> ...



ich weiss nicht genau was damit gemeint ist, kann mir das jemand plz erläutern?

Danke & Grüsse


----------



## truesoul (1. Jun 2010)

Wenn man mit double Werten arbeiten möchte bei JSlider heißt es z.B: 


```
new JSlider( -1000 , 1000 , 0 );
```

Bei diesen Slider sieht es so aus: 

1000 steht für 1.00
-1000 steht demnach für -1.0

900 steht für 0.90
-900 steht demnach für -0.9

550 steht für 0.55
...
usw

Bewegt man dann den Slider um 10
Heißt es: 
10 steht für 0.01

Bewegt man dann den Slider um 1
Heißt es:
1 steht für 0.001

Mfg


----------



## joni (1. Jun 2010)

ok, danke für die Antwort schonmal,

aber wie genau kann ich das jetzt umsetzten?

weil 
	
	
	
	





```
jSlider1 = new javax.swing.JSlider( -1000, 1000, 0);
```
 setzt ja nur den wertebereich fest muss ich diese dann noch irgendwie dividieren oder so? bin echt ratlos ???:L


EDIT: OK, vielleicht habe ich die Frage am Anfang nicht richtig formulert, ich weiss schon was es macht, aber meine Frage ist WIE man es macht, weill wenn ich einfach den Wertebereich setze passiert genau garnichts und ich weiss nicht wie ich den Wert dividieren kann??, hier mal mein SC vielleicht bringt das ja was.


```
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class EventTest {

	public static void main(String[] args) {
		
		final JSlider jSlider = new JSlider(-1000, 1000, 0);
		final JTextPane jTextPane = new JTextPane();
		
		
		
		jSlider.setValue(0);
		jTextPane.setText("0.0000 g");
		jSlider.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent ev) {
				jTextPane.setText("" + jSlider.getValue() + " g");
			}
		});

		JFrame f = new JFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.getContentPane().add(jSlider, BorderLayout.SOUTH);
		f.add(jTextPane, BorderLayout.NORTH);
		f.pack();
		f.setVisible(true);

	}
}
```


----------



## truesoul (1. Jun 2010)

Slider bewegen um 1 ergibt : 
1/1000 der double wert ist somit 0.001

Slider bewegen um 10 ergibt : 
10/1000 = 0.01

usw....


----------



## Verjigorm (1. Jun 2010)

mal ein kleines Beispiel


```
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class JSliderTest extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JSlider jSlider = null;
	private JLabel jLabel = null;

	/**
	 * This method initializes jSlider	
	 * 	
	 * @return javax.swing.JSlider	
	 */
	private JSlider getJSlider() {
		if (jSlider == null) {
			jSlider = new JSlider(-1000, 1000, 0);
			jSlider.addChangeListener(new javax.swing.event.ChangeListener() {
				public void stateChanged(javax.swing.event.ChangeEvent e) 
				{
					JSlider slider = (JSlider) e.getSource();
					jLabel.setText(""+(double)slider.getValue() / 1000);
				}
			});
		}
		return jSlider;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JSliderTest thisClass = new JSliderTest();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public JSliderTest() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
		setLocationRelativeTo(null);
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setText("0");
			jLabel.setHorizontalAlignment(SwingConstants.CENTER);
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJSlider(), BorderLayout.CENTER);
			jContentPane.add(jLabel, BorderLayout.SOUTH);
		}
		return jContentPane;
	}

}
```


----------



## joni (1. Jun 2010)

Verjigorm hat gesagt.:


> mal ein kleines Beispiel
> 
> 
> ```
> ...





Danke vielmals Verjigorm, genau diese Zeile habe ich gesucht:


```
jLabel.setText(""+(double)slider.getValue() / 1000);
```


:toll: Merci


----------

