3

価値のあるバーを作りたい。円を動かすと、フィールドの値が変わるはずです。これどうやってするの?これがスクリーンショットです。どうすればこれを達成できますか?

これに似たものでもOKです。これで私を助けてください。前もって感謝します :)

ここに画像の説明を入力

4

3 に答える 3

9

SpinSlider有用な例かもしれません。

補遺: に適したフォーマット文字列を使用した例を次に示しますJSpinner.NumberEditor

補遺:ここpaintTrack()に示すように、オーバーライドすることでスライダーの色を変更できます。

SpinSlider 画像

import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/** @see https://stackoverflow.com/questions/6067898 */
public class SpinSlider extends JPanel {

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("SpinSlider!");
                f.add(new SpinSlider());
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.pack();
                f.setVisible(true);
            }
        });
    }

    public SpinSlider() {
        this.setLayout(new FlowLayout());
        final JSpinner spinner = new JSpinner();
        final JSlider slider = new JSlider();
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSlider s = (JSlider) e.getSource();
                spinner.setValue(s.getValue());
            }
        });
        this.add(slider);
        spinner.setModel(new SpinnerNumberModel(50, 0, 100, 1));
        spinner.setEditor(new JSpinner.NumberEditor(spinner, "0'%'"));
        spinner.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSpinner s = (JSpinner) e.getSource();
                slider.setValue((Integer) s.getValue());
            }
        });
        this.add(spinner);
    }
}
于 2011-05-20T05:56:17.397 に答える
5

JSliderJava で値 (スライダー) を持つバーを作成するには、クラスを使用できます。このクラスのインスタンスを作成すると、min などのすべてのパラメーターを指定できます。そして最大。値、ステップ サイズなど。

ChangeListenerスライダーにを追加できます。これChangelistenerによりメソッドが実装され、stateChanged()このメソッドでは、スライダーの位置に基づいてテキスト ボックスに表示される値を変更できます。

JSlider slider= new JSlider(JSlider.HORIZONTAL,0,100,50); //min value 0, max value 100, initial value 50
slider.addChangeListener(this)
JTextFox text = new JTextFox("50");
//Some other code, adding the the slider, text box (and other stuff) to the application
//...

public void stateChanged(ChangeEvent e)
{
   JSlider source = (JSlider)e.getSource();
   int value = (int)source.getValue();
   text.setText(Integer.toString(value));
}
于 2011-05-20T05:55:21.047 に答える
1

Java Swing では、JSlider (目的のモデルと動作が既にある) を使用して、その UI をカスタマイズできます。

于 2011-05-20T05:50:48.150 に答える