Начинаю дебажить этот кусок кода
public void redrawGraphic(Function func, int color){
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
Rectangle clientArea = canvas.getClientArea();
e.gc.setLineWidth(1);
e.gc.setForeground(e.display.getSystemColor(color));
for (int currFunc = 0; currFunc < func.size() - 1; currFunc++) {
if ((int)Math.round(abs(func.getPoint(currFunc).y))
<= clientArea.height/LINES_SPACE*currScale/2 + currPixelsCenterX + 1) {
int key0 = (int)Math.round(func.getPoint(currFunc).x
/ currScale * LINES_SPACE) + clientArea.width / 2;
int value0 = -(int)Math.round(func.getPoint(currFunc).y
/ currScale * LINES_SPACE) + clientArea.height / 2;
int key1 = (int)Math.round(func.getPoint(currFunc + 1).x
/ currScale * LINES_SPACE) + clientArea.width / 2;
int value1 = -(int)Math.round(func.getPoint(currFunc + 1).y
/ currScale * LINES_SPACE) + clientArea.height / 2;
e.gc.drawLine(key0 - currPixelsCenterX, value0 + currPixelsCenterY,
key1 - currPixelsCenterX, value1 + currPixelsCenterY);
}
}
}
});
}
При step over перескакивает через блок
new PaintListener() {}
При step into в переменных у canvas пишет "No such instance field: 'canvas' ", хотя это поле проинициализированно. Если убрать все содержимое блока -- результат тот же.
У меня есть подозрение, что виновата синхронизация.
public void drawNewPoint(){
Display.getDefault().asyncExec(new Runnable () {
public void run() {
lock.lock();
try {
while (model.isReadyToDraw) {
condition.await();
}
Thread.sleep(model.getMsSleepTime());
model.isReadyToDraw = true;
System.out.println(model.sharedPoint.x + " " + model.sharedPoint.y);
model.addSharedLinearPoint();
//вот тут вызываю метод, листинг которого выше
graphicsController.redrawGraphic(model.getLinearFunction(), SWT.COLOR_GREEN);
condition.signalAll();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
} finally {
lock.unlock();
}
}
});
}
Метод выше выполняется в классе, который реализует Runnable, где синхронизируется с другим потоком, осуществляющим вычисления.
В чем же причина?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Тут в консоль выводятся слова длинна которых больше 4-ёхКак можно изменить условие,чтобы выводилась слово с максимальной длинной ?
Я установил джарник с нужной мне библиотекой в maven local следующей командой:
Допустим у меня есть Два объекта : Пенал и ручка в пенале может содержаться большое количество ручек представим бд с двумя таблицами: Код: