2016-05-21 28 views
1

In meinem ImageJ Plugin zeige ich eine GenericDialog, die eine Reihe von Bildern, die an ihm hat, wie folgt aus:ImageJ: Wie bekomme ich Image in GenericDialog, um es neu zu streichen?

// 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(); 
} 

Ich halte einen Verweis auf die Colorprocessor und der Imageplus. Wenn der Schieberegler im GenericDialog verschoben wird, wird das Ereignis dialogItemChanged() ausgelöst. Hier ändere ich die Farbe auf dem Bild:

Jetzt, wenn ich dies ausführen, wird die Farbe im Bild nicht aktualisiert. Nur wenn ich die Größe des Dialogfelds ändere und den Rand über das Bild verschiebe, wird die Farbe korrekt angezeigt.

Wie kann ich den Dialog zum Repaint zwingen?

Ich versuchte so viele verschiedene Updates & Repaints, ich bin out Optionen.

+0

Haben Sie versucht, 'ip.updateAndDraw()'? Hast du 'gd.validate() versucht? gd.repaint(); '? – ctrueden

Antwort