Announcement

Collapse
No announcement yet.

Modales Meldungsfenster ohne Ränder

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Modales Meldungsfenster ohne Ränder

    Hallo!

    Ich entwickle zurzeit eine Java-Anwendung (Swing) mit welcher man Fotos einer Digitalkamera einlesen, diese in Miniaturansicht anzeigen und in der Helligkeit bzw. im Kontrast verändern, sie drehen und am Ende automatisch auf CD brennen kann.

    Nun habe ich das Problem, dass ich während des längeren Brennvorgangs (mkisofs und cdrecord werden als Threads gestartet) gerne ein sogenanntens Meldungsfenster einblenden würde. Das Fenster sollte möglichst randlos sein und keine Knöpfe zum Schließen/Vergrössern/Verkleinern aufweisen (wie JPanel eben). Ausserdem sollte das Fenster modal sein, also über der Hauptanwendung stehen, bis der Brennvorgang beendet ist.

    Nun habe ich schon mit JDialog experimentiert, aber solange dieses Fenster geöffnet ist, habe ich keine Möglichkeit vom Thread aus auf dieses Fenster zuzugreifen, um z.B. darin einen Text (Fehlersituation?) auszugeben - hier kommt es immer zu einer NullPointerException. Dasselbe als JFrame realisiert funktioniert einwandfrei, auch wenn die Randlosigkeit etc. nicht gegeben ist. Hier habe ich aber das Problem der nicht vorhandenen Modalität.

    Weiss hier jemand einen Rat bzw. hat schon mal jemand solch ein Meldungsfenster realisiert. Im Internet habe ich schon gestöbert, aber nichts gefunden das sich so verhält wie von mir gewünscht. Es wäre nett, wenn mir jemand helfen könnte.

    Grüsse aus Stuttgart, Gunter

  • #2
    Hallo Gunther,
    für randlose Fenster benutzt man JWindow, zu dem man wie beim JFrame<br>
    mit getContentPane().add() das gewünschte JPanel hinzufügt.<br>
    JWindow wird auch für sog. Splash Screens verwendet.<br>
    Allerdings - genau wie beim JFrame - ohne modal! Meines Wissens nach<br>
    bekommt man Modalität auf einfache Weise nur mit JDialog, wenn man<br>
    dort im Constructor modal auf true setzt.
    Wenn Du JWindow verwendest wird es kompliziert, im Hauptfenster allen Input<br>
    genau wie bei modal zu sperren. Ich habe mal mit GlassPane in diesem<br>
    Sinne experimentiert, aber das ist nicht trivial. Wenn das GlassPane<br>
    visible ist und Interesse an MouseEvents bekundet hat, werden<br>
    diese MouseEvents zum GlassPane geleitet. So kann man sie abfangen<br>
    bis man das GlassPane wieder invisible macht. Wäre vielleicht<br>
    auszuprobieren, wenn es keine besseren Tips noch gibt.

    Gruss Klau

    Comment

    Working...
    X