Slider oder Scale mit sichtbarem Wert

Joghurt

Grünschnabel
Hallo,

ich suche ein Widget, mit dem ich int oder double Werte ändern kann. Slider und Scale bieten sich an, aber da seh ich die Werte ja nicht. Kann man das irgendwie so einstellen, dass die Werte sichtbar werden oder muss ich da selbst ein Textfeld mit einem listener refreshen?
 
Hallo!

Vielleicht hilft dir das hier:
Code:
package de.tutorials;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;

public class Test03 extends JFrame {

    private static final long serialVersionUID = 3381757836370807353L;

    private JSlider slider;

    private JSpinner spinner;

    public Test03() {
        super("Test03");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        slider = new JSlider(0, 100);
        slider.setMajorTickSpacing(25);
        slider.setMinorTickSpacing(5);
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.setPaintTrack(true);

        SpinnerModel model = new SpinnerNumberModel(0.0D, 0.0D, 100.0D, 0.5D);
        spinner = new JSpinner(model);

        getContentPane().add(slider, BorderLayout.NORTH);
        getContentPane().add(spinner, BorderLayout.SOUTH);

        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new Test03();
    }
}

Gruß Tom
 
@Thomas
Ich glaube, Joghurt meint die SWT Komponenten Slider und Scale.

@Joghurt
Hmm.. sieht nicht so aus, als ob man das irgendwie einstellen kann, ob die Werte ausgegeben werden oder nicht.
 
Hallo!

Das was du gerne hättest können die verfügbaren SWT Widgets scheinbar nicht ...
Dann bau dir eben selbst ein entsprechendes Widget...
http://www.eclipse.org/articles/Article-Writing Your Own Widget/Writing Your Own Widget.htm

Code:
/*
 * Created on 12.10.2004
 */
package de.tutorials;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Scale;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Slider;
import org.eclipse.swt.widgets.Text;

/**
 * @author Darimont
 *  
 */
public class Test06 {

    public static void main(String[] args) {
        new Test06().doIt();
    }

    private void doIt() {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Test06");
        shell.setLayout(new RowLayout());

        ScaleWithText swt = new ScaleWithText(shell, SWT.NONE, 0, 200, 5);

        shell.pack();
        shell.open();

        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();
    }

    class ScaleWithText extends Canvas {

        private Text text;
        private Scale scale;

        public ScaleWithText(Composite parent, int style, int min, int max,
                int inc) {
            super(parent, style);
            GridLayout gl = new GridLayout(2, false);
            this.setLayout(gl);
            text = new Text(this, SWT.NONE);
            scale = new Scale(this, SWT.NONE);

            scale.setMinimum(min);
            scale.setMaximum(max);
            scale.setIncrement(inc);

            scale.addSelectionListener(new SelectionAdapter() {
                public void widgetSelected(SelectionEvent e) {
                    int i = scale.getSelection();
                    text.setText("" + (i * 0.5D));
                }
            });

            this.pack();
        }

        public Scale getScale() {
            return scale;
        }

        public Text getText() {
            return text;
        }
    }
}

Gruß Tom
 
Hallo

Also bei mir klappt es!
Ich habe einen scaler zum verkleinern und vergrößern von images genommen
als größtern wert habe ich 200 und als kleinsten 1 eingestellt.
wenn der scaler ausgewählt wird (Selectinglistner) dann ändere in den Tooltip auf den aktuellen wert (scaler.getSelection). gleichzeitig wird das bild in der größe geändert.
Theoretisch könntest Du auch den aktuellen wert in ein textfeld schreiben
 

Neue Beiträge

Zurück