Переключение значения аргумента addMouseListener и addMouseMotionListener по кнопке

221
26 ноября 2016, 19:26

На форме есть 2 взаимовыключающих togglebtn (нажимая одну я активирую режим "карандаш", нажимая вторую я активирую режим "линия"). Для рисования произвольных изображения я создал класс PaintPanel наследник от JPanel, и поместил в него 2 класса: MyMouseHandler (рисует карандашом) и DrawLine (рисует линии) наследники от MouseAdapter. В переопределенном методе setBackground класса PaintPanel создаю экземпляры вышеперечисленных 2х классов рисования и через условия пытаюсь выбирать соответствующий аргумент по нажатию соответствующей кнопки... Не работает...

public class PaintPanel extends JPanel {
    @Override
    public void setBackground(Color bg) {
        super.setBackground(BACK_COLOR);
        setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
        handler = new MyMouseHandler();
        lineHandler = new DrawLine();
        if (penToggleBtn.isSelected()) {
        this.addMouseListener(handler);
        this.addMouseMotionListener(handler);
        }
        if (lineToggleBtn.isSelected()) {   
        this.addMouseListener(lineHandler);
        this.addMouseMotionListener(lineHandler);
        }
    }

Если комментирую одно из условия, и с оставшегося убираю if, то работает. Подскажите как реализовать эту задумку?

Пример кода с addItemListener

penToggleBtn = new JToggleButton("P");
    penToggleBtn.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            brushPanel.addMouseListener(handler);
            brushPanel.addMouseMotionListener(handler);
        }
    });
    lineToggleBtn = new JToggleButton("Line");
    lineToggleBtn.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            brushPanel.addMouseListener(lineHandler);
        }
    });
READ ALSO
Activity пересоздается после смены Activity

Activity пересоздается после смены Activity

У меня есть 3 Activity1 - MainActivity, 2 - InfoActivity, 3 - ChangelogActivity

205
Не вызывается onActivityResult

Не вызывается onActivityResult

Для получения разрешения androidpermission

223
Альтернатива подключения к базе данных Mysq

Альтернатива подключения к базе данных Mysq

Всем привет!Дело в слудующем

234
Как узнать путь к SDK и NDK на Mac?

Как узнать путь к SDK и NDK на Mac?

Как посмотреть в какой директории находятся SDK и NDK на Mac? Куда они обычно устанавливаются?

359