2016-05-21 7 views
1

В моем ImageJ плагина я отобразить GenericDialog, который имеет кучу изображений, прикрепленные к нему, как это:ImageJ: как получить изображение внутри GenericDialog, чтобы перекрасить?

// global: 
ColorProcessor cp = new ColorProcessor(50, 50); // new ColorProcessor 
ImagePlus ip; 

public void run(ImageProcessor ip) { 
    GenericDialog gdiag = new GenericDialog("Foo"); // new Dialolg 

    gdiag.addDialogListener(this); // adding Listener 
    gdiag.addMessage("Lorem Ipsum"); // adding Message 
    gdiag.addSlider("Bar", 1, 360, 1); // adding Slider 

    Color c = new Color(r, g, b); 
    cp.setColor(tarColor); 
    cp.fill(); 
    ip = new ImagePlus("fooimg", cp); 

    gdiag.addImage(ip); 
    gdiag.showDialog(); 
} 

я держу ссылку на Colorprocessor и ImagePlus. Когда слайдер перемещается в GenericDialog, срабатывает событие dialogItemChanged(). Здесь я меняю цвет на изображении:

public boolean dialogItemChanged(GenericDialog gd, AWTEvent event) { 
    float fooVal = (float) ((Scrollbar)(gd.getSliders().get(0))).getValue(); 

    // calculating color based on fooVal ... 

    Color selColor = new Color(r, g, b); 
    cp.setColor(selColor); 
    cp.fill(); 
} 

Теперь, когда я запускаю это, цвет в изображении не обновляется. Только когда я изменяю размер диалогового окна и перемещаю границу над изображением, цвет отображается правильно.

Как я могу заставить диалог перекрасить?

Я пробовал так много разных обновлений & repaints, у меня нет вариантов.

+0

Вы пытались 'ip.updateAndDraw()'? Вы попробовали 'gd.validate(); gd.repaint(); '? – ctrueden

ответ