Closed aurusov closed 7 years ago
Увяз в изучении библиотеки SWT. Пока не получается найти в package ru.bmstu.rk9.rao.ui.plot; PlotFrame управляющие конструкции для работы с масштабом графиков. ПРодолжаю искать материалы по SWT.
В прошлые консультации решал задачи из книги ШИЛДТА "Ява для начинающих",чтобы убедиться в том,что я усваиваю материал. Решил все задачи из первых 9глав и написал все упражнения. Мытарства с swt пока не дают результатов, разбираюсь с паттерном "наблюдатель".
в курсе про vogella и стэковерфлоу
Сделал приближение/отдаление по обоим осям через прокрутку мыши. Как связать key event и mouse event? Ниже я прикрепил код,который не работает. Тут паттерн наблюдатель приминяется?
В конструкторе класса PlotFrame добавил слушателей для созданного мною класса "PlotMouseWheelListener" addMouseWheelListener(new PlotMouseWheelListener()); addKeyListener(new PlotMouseWheelListener()); PlotMouseWheelListener
//Сам класс ,в котором я попробовал связать нажатие на кнопку и прокрутку мыши.
package ru.bmstu.rk9.rao.ui.plot;
import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseWheelListener;
public class PlotMouseWheelListener implements MouseWheelListener, KeyListener { int flagX = 0, flagY = 0; //индикаторы, указывающие на состояние кнопок shift и ctrl
@Override
public void mouseScrolled(MouseEvent e) {
// TODO Auto-generated method stub
// e.count позволяет определить направление прокрутки мыши System.out.println("Count=" + e.count); // передача переменной plotFrame возможности работать с методами класса PlotFrame на // текущем виджете (графике) PlotFrame plotFrame = (PlotFrame) e.widget; if ((e.count > 0) && (flagX == 1)) { plotFrame.zoomInRange(e.x, e.y); } if ((e.count < 0) && (flagX == 1)) { plotFrame.zoomOutRange(e.x, e.y); }
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.keyCode == SWT.SHIFT) {
flagX = 1;
}
if (e.keyCode == SWT.CTRL)
flagY = 1;
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if (e.keyCode != SWT.SHIFT) {
flagX = 0;
}
if (e.keyCode != SWT.CTRL)
flagY = 0;
}
}
Мы с Вами голосом обсуждали возможность проведения консультации по скайпу. У меня raox крашится после внесения изменений в класс ,в котором я решаю задачу. Сложно понять, где допускаю ошибки
Сделай форк, создай бранч, залей код. Это раз. Два - как та получилось, что появился код, который не работает непонятно где ? Значит надо его удалить и добавлять по оной строке с отладкой после каждой. Паттерн используется.
Залил код в ветку. Изменения в PlotFrame и в созданном мною классом PlotMouseWheelListener. ПОка не могу понять, как одновременно можно использовать 2 слушателя: Key and mousewheel.
Поставь пул-реквест
Сделал. Задачу решал в старом исходнике (где-то 15 сентября). Вопрос про одновременное использование 2-х слушателей актуален. В том же ПлотФрэйм мышку не получается слушать, можно только клавиатуру.
Изменения в PlotFrame в методе (public void keyPressed(KeyEvent e)) и в созданном мною классом PlotMouseWheelListener. Реализовать 2 слушателя в одном классе не получилось( PlotFrame) ,поэтому я имплементил MouseWheelListener в PlotMouseWheelListener. Управлять одним листенером я могу.
Не мерджится. Git тупо не понимает команды.git remote -вообще не распознается. Я думаю,что обновление исходников не повлияет на эту задачу.
С гитом все пошло не так. Еще раз
release/current
(в своем форке, а не моем)Задача сделана, ну или очень похожа на сделанную. Я заново скопировал исходники ,поставил самую свежую версию. НЕ совсем понятен пункт 2, я же и так форкнул Ваш репозитарий. Но я сейчас посмотрю в книге. Бранч сделал от ветки мастер( testing)
ВРоде сделал как полагается. Наверное ,еще переслались файлы Workbench, так как я положил их в папку
Задачи не вижу вообще. Вижу два непонятных файла, которые не понимаю как собирать и запускать вместе с raox.
НЕ совсем понятен пункт 2, я же и так форкнул Ваш репозитарий.
С форком всё не так. Зачем-то сделали бранч в моей репе, а не в совей. К тому же нарушив gitflow. У меня руки чешутся удалить это. Надо реально почитать про гит из wiki, ссылка не просто так первой идет. Забили и пользовались web-мордой гитхаба ? Это объясняет сделанное. Намек понятен ?
Кажется, что с залитием файлов все вышло. Спасибо за консультацию в скайпе. git@github.com:ViktorRakhmatulin/RaoX.git
Можно же будет голосом обсудить доработки к этой задаче и постановку задачи курсового до субботы?
Да, вышло, отписался в реквесте. Не уверен насчет до субботы, посмотрю по обстоятельствам.
По задаче осталось неблокирующая курсач подзадача. Почему-то не работает ограничение на масштаб (чтобы не уходить в точку, к примеру). Подписчики есть, но текущее значение масштаба в них неадекватное. Подключаюсь, хочу сам посмотреть, на консультации не получилось понять.
@ViktorRakhmatulin Осознал, что еще не все замечания из пул-реквеста исправлены. Хочется дождаться окончания правки этого файла с вашей стороны.
Имеется в виду ограничение масштабирования или что?Я убрал условия со scaleX and scaleY , которые не работали, в последнем коммите.
Пробегитесь по всем замечаниям и убедитесь, что они исправлены.
По оси X с зажатой
Ctrl
По оси Y с зажатойShift