hansoctantan Ответов: 0

Java set jscrollpane scroll не работает


У меня есть метод, который изменяет размер изображения и устанавливает его положение прокрутки. Обе функции работают, но когда я помещаю их в один вызов, как это
setZoomFactor(1.5);
setScrollPosition(new Point(500, 500)); //lets say this will display the center of the image.
он будет увеличивать изображение, но не позиционировать его. Он работает, когда я помещаю 2 в отдельную кнопку и нажимаю ее одну за другой. Является ли одна из строк в setZoomFactor выполняется в потоке и продолжается до следующей строки? Нужен совет. Спасибо.
//CODE FOR ZOOMING AND POSITIONING
public void setZoomFactor(double zoomFactor) {
    if(IMAGE_FOUND && image != null && this._zoomFactor != zoomFactor) {
        this._zoomFactor = zoomFactor;
        width = originalWidth;
        height = originalHeight;
        double newwidth = width * zoomFactor;
        double newheight = height * zoomFactor;
        if(newwidth > 3 && newheight > 3) {
            disposeImage();
            image = ImageUtil.scale((BufferedImage) origImage, newwidth, newheight, _antiAlias);
            garbageCollect();
        }
        jLabel1.setIcon(new ImageIcon(image));
        garbageCollect();
    }
}

public void setScrollPosition(Point position) {
    setScrollX(position.x);
    setScrollY(position.y);
}

public int getScrollX() {
    return jScrollPane1.getHorizontalScrollBar().getValue();
}

public void setScrollX(int scroll) {
    jScrollPane1.getHorizontalScrollBar().setValue(scroll);
}

private void garbageCollect() {
    Runtime.getRuntime().gc();
    System.gc();
}

private void disposeImage() {
    if(image != null) image.flush();
    image = null;
    jLabel1.setIcon(null);
    garbageCollect();
}


Что я уже пробовал:

Я попробовал поставить 2 вызова метода на разные кнопки, и это работает. Я думаю, это из-за задержки между щелчками.

0 Ответов