如何在java中更改笔刷大小

如何在java中更改笔刷大小,java,Java,我的类实现了ChangeListener。我制作了一个滑块,这样就可以更改画笔的大小,我有一个名为brush\u size的变量,但我不知道如何在stateChanged方法中更改画笔的大小。 这是我的密码: public class PaintBrushTool implements Tool, ChangeListener { private PaintBrushToolUI ui; private ImageEditorModel model; private i

我的类实现了ChangeListener。我制作了一个滑块,这样就可以更改画笔的大小,我有一个名为brush\u size的变量,但我不知道如何在stateChanged方法中更改画笔的大小。 这是我的密码:

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?
    }

}

brushSize变量不应该由模型持有吗?无论如何,只需通过调用ChangeListener中的JSlider的getValue来获取该值,并使用它来设置笔刷大小变量。如果它由模型持有,那么在从JSlider获得值后,在模型上调用setBrushSizevalue,并确保为您的模型提供该方法


您的代码似乎正在使用M-V-C或Model Viewer控制器类型结构。如果是这样,那么调用模型的setter方法将触发模型观察者的通知,这将最终改变视图。

例如@重写public void stateChangedChangeEvent e{brush_size++}@Blaatz0r:太简单了。滑块可以增加或减少值,而该值通常不仅仅是+1。我喜欢太简单的答案我应该有一个嵌套的for循环吗?@user6428015:为什么?我不知道你会在哪里使用它-请解释。您的代码显示的数组或集合中没有您将循环通过的数组或集合?很抱歉,应用您的代码太晚了。现在我有了getValue,并将笔刷大小设置为变量。但它仍然不起作用。这是我的代码:public void stateChangedChangeEvent e{JSlider source=JSlidere.getSource;int-sizeValue=source.getValue;brush_size=sizeValue;}@user6428015:请避免在注释中显示这样的代码。它无法格式化且难以读取。话虽如此,您的代码看起来是正确的,因为它现在似乎正在设置brush_size变量,该变量应重命名为brushSize,以符合Java camel CAME命名实践,但您需要进行一些调试,以找出为什么它的行为不符合您的要求,这是您唯一可以做的事情,因为您拥有整个程序,我们不需要,我们也不想要它。@user6428015:要问的问题:您是否正在将ChangeListener添加到JSlider中?这个JSlider是GUI中存在的JSlider吗?GUI如何使用笔刷大小变量数据?在这里,最好将值放入模型中。