2016-12-02 3 views
-3

MyクラスはChangeListenerを実装しています。私は、ブラシのサイズを変更することができるようにスライダーを作成し、brush_sizeという変数を持っていますが、stateChangedメソッドでbrush_sizeをどのように変更できるかわかりません。ここ は私のコードです:Javaのブラシサイズを変更する方法

public class PaintBrushTool implements Tool, ChangeListener { 

    private PaintBrushToolUI ui; 
    private ImageEditorModel model; 
    private int brush_size = 5; 
    private JSlider sizeSlider; // new slider 

    public PaintBrushTool(ImageEditorModel model) { 
     this.model = model; 
     ui = new PaintBrushToolUI(); 

     JSlider sizeSlider = new JSlider();  // initialize the slide 
     sizeSlider.addChangeListener(this);  // make this class listen to the PaintBrushToolUI class 
    } 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     model.paintAt(e.getX(), e.getY(), ui.getBrushColor(), brush_size); 
    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 
     model.paintAt(e.getX(), e.getY(), ui.getBrushColor(), brush_size); 
    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public String getName() { 
     return "Paint Brush"; 
    } 

    @Override 
    public JPanel getUI() { 
     return ui; 
    } 
    @Override 
    public void stateChanged(ChangeEvent e) { 
     // what should i put in here? 
    } 

} 
+0

..... @Override ます。public voidのstateChanged(ChangeEventの電子){ brush_size ++; } – Blaatz0r

+0

@ Blaatz0r:あまりにも簡単です。スライダは値の**と**の減少を増加させることができ、その値は通常+1だけではありません。 –

+0

私はあまりにも単純な答えが大好きです – Blaatz0r

答えて

1

はbrushSize変数はモデルによって保持されるべきではないでしょうか。それにかかわらず、ChangeListener内のJSliderから値を取得するには、getValue()を呼び出して、これを使用してブラシサイズ変数を設定します。それがモデルによって保持されている場合は、JSliderから値を取得した後にモデルのsetBrushSize(value)を呼び出し、モデルにそのメソッドを渡してください。

あなたのコードは、M-V-CまたはModel-Viewer-Controllerタイプの構造を使用しているようです。その場合は、モデルのセッターメソッドを呼び出すと、モデルオブザーバーの通知がトリガーされ、最終的にビューが変更されます。まあ例えば

+0

入れ子になっているforループはありますか? – user6428015

+0

@ user6428015:なぜですか?私はどこでそれを使うのか分かりません - 説明してください。どの配列やコレクション(コードには何も表示されません)をループしますか? –

+0

遅く申し訳ありません。今はgetValue()があり、変数にブラシサイズを設定しました。しかし、それはまだ動作していません。私のコードはここにあります:public void stateChanged(ChangeEvent e){ \t \t JSlider source =(JSlider)e.getSource(); \t \t int sizeValue = source.getValue(); \t \t brush_size = sizeValue; \t} – user6428015

関連する問題