From window, to wind

趣味のゲームとJavaプログラムなどについて 適当に書き綴るブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JSliderとJSpinnerがの値が一緒に変化するクラス

分かりやすく説明すると、ペイント系のソフトにある色のRGBなどのバーと同様に、
JSpinnerとJSliderの値を一緒にしたクラスです。
何かの役には…
jscrollspinner.png


ソースコード
JScrollSpinnerクラス

package program;

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;

public class JScrollSpinner extends JPanel{

    private JSpinner spinner;
    private JSlider bar;
    private boolean changekey=false;
    private SpinnerNumberModel model;
   
    JScrollSpinner(int min, int max){
        bar = new JSlider(JSlider.HORIZONTAL, min, max, min);
        bar.addChangeListener(new ChangeListener(){
            public void stateChanged(ChangeEvent ce) {
                if(changekey==false){
                    changekey=true;
                    model.setValue(bar.getValue());
                }else{
                    changekey=false;
                }
            }   
        });
       
        model = new SpinnerNumberModel(min, min, max, 1);
        spinner = new JSpinner(model);
        spinner.addChangeListener(new ChangeListener(){
            public void stateChanged(ChangeEvent ce) {
                if(changekey==false){
                    changekey=true;
                    bar.setValue(((Integer)model.getValue()).intValue());
                }else{
                    changekey=false;
                }
            }
        });
       
        GBLayout.addGB(bar, this, 0, 0, 1, 1);
        GBLayout.addGB(spinner, this, 1, 0, 1, 1);
    }
   
    public JSpinner getSpinner(){
        return(spinner);
    }
   
    public JSlider getSlider(){
        return(bar);
    }
}


使い方
最小値と最大値をint型で渡すことで初期値を最小値として設定されます。
changekeyで値の変更を再度呼び出さないようにしています。
初期値の変更用にメソッドを追加するか、getSpinner()を使って直接初期値を変更してください。
double型はJSliderが対応していないので別途余裕があったら作ります。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://kagenyan.blog69.fc2.com/tb.php/32-0171db7a
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。