2010-09-01 16 views
5

Sto sviluppando un'applicazione Java basata su Swing in Eclipse su Windows XP. Ho una configurazione a doppio monitor.Cambia visualizzazione utilizzata per Eclipse Avvia

Desidero avviare il programma su un monitor diverso da quello in cui sto eseguendo Eclipse. Come posso configurare la mia configurazione di debug per fare in modo che ciò accada?

+0

Quale sistema operativo si sta utilizzando? – Gadolin

+0

Sto usando WinXP. –

risposta

2

Quando viene aperto un nuovo frame, esso assume come valore predefinito le coordinate 0,0. Esattamente dove questo dipende dal layout del monitor del sistema operativo. In genere, 0,0 sarà l'angolo superiore sinistro del monitor principale.

La soluzione al problema è eseguire Eclipse sul monitor secondario, in modo che le applicazioni si aprano sull'altro monitor (principale). In realtà non devi spostare Eclipse per farlo. Accedi alle impostazioni del monitor del sistema operativo e imposta il monitor principale sul monitor su cui desideri avviare l'applicazione. Eclipse sarà ora in esecuzione sul monitor secondario.

Il nuovo frame verrà ora aperto sull'altro monitor e non è stato modificato alcun codice nel processo, ma solo le impostazioni di configurazione del sistema operativo.

+0

Grazie, sembra fare il trucco! –

0

Penso che non puoi farlo. L'unica soluzione che ho trovato è spostare manualmente il programma dal primo display al secondo manualmente e quindi chiuderlo in questa posizione (con il pulsante di chiusura e non con la console terminare il pulsante rosso che interrompe brutalmente la VM senza salvare nulla). Quindi al prossimo riavvio, l'avvio del programma dovrebbe apparire sul secondo display. Per far funzionare questa soluzione, la configurazione di avvio non dovrebbe cancellare lo spazio di lavoro e la configurazione ad ogni avvio al fine di mantenere la posizione dello schermo del programma.

Vedere RCP opening monitor per informazioni correlate sull'app RCP.

+1

Funzionerebbe per un'applicazione RCP, ma non per un'app Swing. – zvikico

+0

Oopppsss zvikico ha ragione, la mia risposta è Ok per una app RCP ma non per una Swing. Non ho ricevuto la domanda correttamente, mi dispiace. –

0

È possibile ottenere tale comportamento a livello di programmazione. Sono sicuro che puoi trovare Google e trovare esempi su come aprire la tua finestra sul secondo monitor. Se si tratta di qualcosa che si desidera solo in fase di debug, aggiungere un interruttore nella configurazione di avvio (in particolare, un argomento di runtime JVM) e controllare lo switch (System.getProperty) all'avvio del programma.

+0

Non voglio modificare il mio codice per farlo, è probabilmente possibile controllare la finestra predefinita dei programmi all'interno del codice java, ma questa non è un'opzione. Mi piacerebbe installare Eclipse per farlo, in modo da poter riutilizzare l'impostazione su più progetti. Se ci sono argomenti di runtime JVM per selezionare il monitor predefinito, è esattamente quello che sto cercando. Non capisci cosa sono, vero? –

+0

Non ho familiarità con questa opzione. Dipende dall'implementazione di GraphicsEnvironment/GraphicsConfiguration. Potresti scrivere un componente riutilizzabile e usarlo nei tuoi progetti. Non influenzerà il tuo codice di produzione. – zvikico

2

Dipende un po 'da come è stato impostato il secondo monitor. Per la mia risposta, suppongo che tu l'abbia aggiunta come "estensione" al desktop (in modo da poter spostare le finestre tra di loro trascinandole con il mouse).

In questa modalità, il desktop diventa più grande. Per vederlo, chiama GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds.

La larghezza deve essere la somma delle larghezze dei due monitor e l'altezza deve essere la maggiore delle due altezze.

Si noti che la coordinata x può essere < 0 (ciò accade se si imposta il monitor corretto come predefinito).

Per spostare la finestra sull'altro monitor, utilizzare semplicemente una posizione (setPosition()) con un valore appropriato e passare tale posizione come opzione per il programma. Oppure salva la posizione corrente come nodo delle preferenze e apri nuovamente la finestra nello stesso punto in cui viene eseguita nuovamente l'app.

Se i monitor sono configurati in modo indipendente, è necessario esaminare l'API GraphicsEnvironment.getScreenDevices().

Problemi correlati