Zweiter Monitor von Java-Anwendung ansprechbar ****

vfl_freak

Premium-User
Moin,

ich hoffe, dass der Titel mein Problem halbwegs hinreichend beschreibt .....

Ich nutze einen PC mit einer digitalen Grafikkarte und zwei Monitoren. Der eine ist also als "Erster" (nennen wir ihn mal "A") und der andere als "zweiter" (nennen wir ihn mal "B") eingetragen.

Wenn ich nun meine Applikation starte, wird sie zunächst auf Monitor A angezeigt. Nun ziehe ich sie auf den Monitor B und lasse sie dort laufen. Dies geschieht jeweils im Vollbildmodus!

Wenn ich jetzt im Ablauf bspw. eine Meldung mit "JOptionPane.showMessageDialog" anzeige, wird diese korrekt zentriert auf der Anwendung auf Monitor B dargestellt.

Nun das Problem :
an einigen Stellen soll ein selbst gebauter (von JDialog abgeleiteter) Dialog angezeigt werden. Dieser besteht im Wesentlichen aus einem Hauptpanel mit Borderlayout (und voreingestellter Größe) und einigen weiteren Panel, die in NORTH, CENTER und SOUTH verteilt sind. Als Parent ist das Fenster meiner Applikation eingetragen.
Ich weise diesem Dialog nun mit "setLocation( x, y)" eine fixe Position zu und setze dann "visible" auf true. Nun wird dieser Dialog an der definierten Pos. auf Monitor A angezeigt, obwohl ja die Applikation auf Monitor B dargestellt wird.

Meine Frage :
Habe ich irgendeine Chance festzustellen, auf welchem der beiden Monitor sich die eigentliche Applikation befindet (also B), um dann den o. g. Dialog auch auf dem Monitor (B) darzustellen :confused:

Welchen Mechanismus nutzt hier "JOptionPane.showMessageDialog" :confused:

Danke im voraus!
Gruß
Klaus

EDIT :
Ah, die Lösung ist die Verwendung von "setLocationRelativeTo( parent )" !!


hier noch schnell eine weitere Lösung, die am Ende der Initialisierungsfunktion einzutragen ist :
Java:
if (parentFrame != null)
{
    Dimension dlgSize = getPreferredSize();
    Dimension parentfrmSize = parentFrame.getSize();
    Point parloc = parentFrame.getLocation();
    setLocation( (parentfrmSize.width - dlgSize.width) / 2 + parloc.x, (parentfrmSize.height - dlgSize.height) / 2 + parloc.y );
}
 
Zuletzt bearbeitet:
versuch doch die Position des JDialogs festzulegen.

Java:
JDialog d = new JDialog()
d.setLocation((int) (frame.getLocation().getX()+frame.getWidth()/2), (int) (frame.getLocation().getY()+frame.getHeight()/2));
 
Zurück