В моем 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, у меня нет вариантов.
Вы пытались 'ip.updateAndDraw()'? Вы попробовали 'gd.validate(); gd.repaint(); '? – ctrueden