Gérer deux moniteurs, cela ne marche pas
Bonjour
J'essaye de mettre en place la gestion de deux moniteurs
Voici le code utilisé
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;
public interface GlobalVar {
// Version de CDM-Rail
public final static String CDM_VERSION = "V26";
// Liste des écrans disponibles
// On ne tient compte que de deux écrans au maximum
static GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
static GraphicsDevice[] gDevices = gEnv.getScreenDevices();
public final static GraphicsDevice SCREEN_PRIMARY = gDevices[0];
public final static GraphicsDevice SCREEN_SECONDARY = gDevices.length > 1 ? gDevices[1] : gDevices[0];
// Les deux confighurations graphiques
public final static GraphicsConfiguration SCREEN_PRIMARY_CONF = SCREEN_PRIMARY.getDefaultConfiguration();
public final static GraphicsConfiguration SCREEN_SECONDARY_CONF = SCREEN_SECONDARY.getDefaultConfiguration();
// Pour utiliser le second écran
public static boolean useScreenSecondary = false;
// Taille de l'écran principal
public final static int SCREEN_PRIMARY_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
public final static int SCREEN_PRIMARY_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
// Taille de l'écran secondaire
public final static int SCREEN_SECONDARY_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
public final static int SCREEN_SECONDARY_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
/*
* Les types de fenêtres utilisées
*/
public final static String WIN_MAIN = "MAIN"; // Fenêtre principale
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
import javax.swing.*;
// Dans cette classe on trouve la création de toutes les fenêtres
public class CdmWin implements GlobalVar{
// Instances des fenêtres
CdmWinMain winMain; // Fenêtre principale de CDM-Rail
// Constructeur
CdmWin (String winType) {
/**
* @param winType
*/
switch (winType) {
case WIN_MAIN :
winMain = new CdmWinMain("CDM-Rail - " + CDM_VERSION);
break;
}
}
/*
* Classe de la fenêtre principale de CDM-Rail
*/
class CdmWinMain extends JFrame{
// Constructeur
CdmWinMain(String ptitle){
/**
* @param ptitle
*/
// Création de la fenêtre sur l'écran principal
super(SCREEN_SECONDARY_CONF);
// Son titre
this.setTitle(ptitle);
// Dimensions de la fenêtre
this.setSize(SCREEN_SECONDARY_WIDTH, SCREEN_SECONDARY_HEIGHT);
// Positionne la fen^tre au centre de l'écran
this.setLocationRelativeTo(null);
// Quitte l'application quand on clique sur le bouton de fermeture de la fenêtre
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
/*
* Classe principale
*
*/
public class CdmMain implements GlobalVar {
/**
*
* @param args
*/
public static void main(String[] args) {
/**
* Création de la fenêtre principale de CDM-Rail
*/
CdmWin winMain = new CdmWin(GlobalVar.WIN_MAIN);
}
} |
Je travaille avec Eclipse, le code s'exécute sans erreurs
Mais la fenêtre s'affiche sur le premier écran
J'ai affiché le nombre d'écran avec gDevices.length, il affiche bien 2
Je suis sur MacOS
Merci pour votre aide
Louis