Hallo Community!
Ich versuche in einem Thread ein Frame zu erzeugen, welches ein Bild darstellen soll und worauf der Benutzer interaktionen durchführen kann. Leiter wird die Darstellung und Benutzbarkeit des Frames/Bildes 5 Sekunden blockiert (Frame mit weißem Hintergrund). Erst wenn der Hauptthread durch ist, wird das Bild dargestellt.
Nach einiger Recherche habe ich feststellen müssen, dass Swing und Threads nicht so gut zueinander passen.
Gibt es trotzdem eine Möglichkeit das obige Beispiel so ablaufen zu lassen, dass die Methode erst endet, wenn der Benutzer alle Interaktionen (3 Rechtecke aufs Bild zeichnen) beendet hat?
Java:
public class Signal2NoiseRatio
{
public ImagePlus SingleSNR(ImagePlus imagePlus)
{
// Thread der ein JFrame erzeugt mit einem erweiterten JPanel, das ein Bild darstellt
new Thread() {
@Override
public void run() {
JFrame imageFrame = new JFrame("ROI");
Container imageFrame_Container = imageFrame.getContentPane();
IIImagePanel imagePanel = new IIImagePanel();
imageFrame_Container.add(imagePanel);
imagePanel.setImage(imagePlusToProcess.getImage());
imagePanel.getDisplayedImage();
imageFrame.setVisible(true);
final SNRSingleImageListener sNRSingleListener = new SNRSingleImageListener(imagePanel);
imagePanel.addMouseListener(sNRSingleListener);
imagePanel.addMouseMotionListener(sNRSingleListener);
}
}.start();
Thread.sleep(5000)
return imagePlus;
}
}
Ich versuche in einem Thread ein Frame zu erzeugen, welches ein Bild darstellen soll und worauf der Benutzer interaktionen durchführen kann. Leiter wird die Darstellung und Benutzbarkeit des Frames/Bildes 5 Sekunden blockiert (Frame mit weißem Hintergrund). Erst wenn der Hauptthread durch ist, wird das Bild dargestellt.
Nach einiger Recherche habe ich feststellen müssen, dass Swing und Threads nicht so gut zueinander passen.
Gibt es trotzdem eine Möglichkeit das obige Beispiel so ablaufen zu lassen, dass die Methode erst endet, wenn der Benutzer alle Interaktionen (3 Rechtecke aufs Bild zeichnen) beendet hat?