2010-09-01 13 views
5

Ich entwickle eine Swing-basierte Java-Anwendung in Eclipse unter Windows XP. Ich habe ein Dual-Monitor-Setup.Ändern der Anzeige für Eclipse-Starts

Ich möchte, dass das Programm auf einem anderen Monitor gestartet wird als dem, auf dem ich Eclipse verwende. Wie kann ich meine Debug-Konfiguration einrichten, um dies zu ermöglichen?

+0

Welches Betriebssystem verwenden Sie? – Gadolin

+0

Ich benutze WinXP. –

Antwort

2

Wenn ein neuer Rahmen geöffnet wird, werden standardmäßig die Koordinaten 0,0 verwendet. Wo das genau ist, hängt vom Monitorlayout Ihres Betriebssystems ab. Normalerweise ist 0,0 die obere linke Ecke des primären Monitors.

Die Lösung für Ihr Problem besteht darin, Eclipse auf Ihrem sekundären Monitor auszuführen, damit die Anwendungen auf dem anderen (primären) Monitor geöffnet werden. Sie müssen Eclipse nicht wirklich verschieben, um dies zu tun. Gehen Sie in die Monitoreinstellungen Ihres Betriebssystems und schalten Sie den primären Monitor auf den Monitor um, auf dem Sie die Anwendung starten möchten. Eclipse wird nun auf dem sekundären Monitor ausgeführt.

Ihr neuer Frame wird jetzt auf dem anderen Monitor geöffnet, und Sie haben dabei keinen Code geändert, nur die Konfigurationseinstellungen Ihres Betriebssystems.

+0

Danke, das scheint den Trick zu machen! –

0

Ich denke, dass Sie das nicht tun können. Die einzige Lösung, die ich gefunden habe, ist, das Programm manuell von der ersten zur zweiten zu verschieben und dann in dieser Position zu schließen (mit der Schließen-Taste und nicht mit der roten Taste der Konsole, die die VM brutal stoppt, ohne etwas zu speichern). Beim nächsten Neustart sollte dann Ihr Programmstart auf dem zweiten Display erscheinen. Damit diese Lösung funktioniert, sollte Ihre Startkonfiguration den Arbeitsbereich und die Konfiguration nicht bei jedem Start löschen, um den Bildschirmstandort des Programms beizubehalten.

Siehe RCP opening monitor für verwandte Sachen auf RCP App.

+1

Das würde für eine RCP-App funktionieren, aber nicht für eine Swing-App. – zvikico

+0

Oopppsss zvikico hat recht, meine Antwort ist Ok für eine RCP App, aber keine Swing. Ich habe die Frage nicht richtig verstanden, tut mir leid. –

0

Sie können dieses Verhalten wahrscheinlich programmgesteuert erreichen. Ich bin sicher, Sie können Google und finden Sie Beispiele, wie Sie Ihr Fenster auf dem zweiten Monitor öffnen. Wenn es nur zur Debugzeit gewünscht ist, fügen Sie einen Schalter in der Startkonfiguration (genauer gesagt ein JVM-Laufzeitargument) hinzu und überprüfen Sie beim Programmstart, ob der Switch (System.getProperty) aktiv ist.

+0

Ich möchte meinen Code dafür nicht ändern müssen, es ist wahrscheinlich möglich, das Standardfenster der Programme innerhalb des Java-Codes zu steuern, aber das ist keine Option. Ich möchte dazu Eclipse einrichten, damit ich die Einstellung für mehrere Projekte wiederverwenden kann. Wenn es JVM-Laufzeitargumente gibt, um den Standardmonitor auszuwählen, bin ich genau danach. Sie wissen nicht zufällig was sie sind, oder? –

+0

Ich kenne diese Option nicht. Dies hängt von der Implementierung der GraphicsEnvironment/GraphicsConfiguration ab. Sie könnten eine wiederverwendbare Komponente schreiben und sie in Ihren Projekten verwenden. Dies hat keinen Einfluss auf Ihren Produktionscode. – zvikico

2

Es hängt ein wenig davon ab, wie Sie Ihren zweiten Monitor eingerichtet haben. Für meine Antwort nehme ich an, dass Sie es als "Erweiterung" zu Ihrem Desktop hinzugefügt haben (so können Sie Fenster zwischen ihnen verschieben, indem Sie mit der Maus ziehen).

In diesem Modus wird Ihr Desktop größer. Um das zu sehen, rufen Sie GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds.

Die Breite sollte die Summe der Breiten Ihrer zwei Monitore sein und die Höhe sollte die größere der beiden Höhen sein.

Beachten Sie, dass die x-Koordinate < 0 sein kann (dies passiert, wenn Sie den richtigen Monitor als Standard festlegen).

Um Ihr Fenster auf den anderen Monitor zu verschieben, verwenden Sie einfach eine Position (setPosition()) mit einem geeigneten Wert und übergeben Sie diese Position als Option an das Programm. Oder speichern Sie die aktuelle Position als Präferenzknoten und öffnen Sie das Fenster erneut, wenn die App erneut ausgeführt wird. Wenn Ihre Monitore unabhängig voneinander konfiguriert sind, sollten Sie in die API GraphicsEnvironment.getScreenDevices() schauen.

Verwandte Themen