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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| // Classe de la fenêtre principale
public class CdmWin extends JFrame{
// Pour éviter un warning
private static final long serialVersionUID = -6677562836791922873L;
// La fenêtre principale
public static CdmWin theWinMain = null;
// La fenêtre du réseau
public static CdmWin.WinInternal theWinLayout = null;
// La fenêtre de la gallerie des trains
public static CdmWin.WinInternal theWinGallery = null;
// Zone d'affichage des fenêtres internes
private JDesktopPane mainDesktop = new JDesktopPane();
private static byte winNum = 0;
// Constructeur
// ptitle : titre de la fenêtre
public CdmWin(String ptitle) {
// Zone d'affichage de la fenêtre
Rectangle screenBounds = Global.SCREEN_PRIMARY_BOUNDS;
theWinMain = this;
// On place la fenêtre sur le bon écran
this.setBounds(screenBounds.x, screenBounds.y, screenBounds.width, screenBounds.height);
Global.cdmMainWin = this.getBounds();
// Son titre
this.setTitle(ptitle);
// Quitte l'application quand on clique sur le bouton de fermeture de la fenêtre
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Pour que la fenêtre reste toujours au premier plan
this.setAlwaysOnTop(true);
// Zone d'affichage des éléments ajoutés à la fenêtre
JPanel mainDisplayArea = (JPanel)this.getContentPane();
JPanel internalDisplayArea= new JPanel();
// Couleur de fond de la zone Desktop
mainDesktop.setBackground(Global.mainBackgroundColor);
// Indique que c'est la zone de la fenêtre
this.setContentPane(mainDisplayArea);
// Zone pour les fenêtres internes
// mainDisplayArea.add(mainDesktop, BorderLayout.CENTER);
internalDisplayArea.add(mainDesktop, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(internalDisplayArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
mainDisplayArea.add(scrollPane);
// Création de la fenêtre du réseau
// Pas visible lors de la création de la fenêtre
mainDesktop.add(theWinLayout = new WinInternal(Global.whichLanguage == Menu.MENU_OPTIONS_LANGUE_FRENCH ? "Le réseau" : "The Layout"));
// Création de la fenêtre de la galerie des trains
// Pas visible lors de la création de la fenêtre
mainDesktop.add(theWinGallery = new WinInternal(Global.whichLanguage == Menu.MENU_OPTIONS_LANGUE_FRENCH ? "La Galerie de trains" : "The Train Gallery"));
// Création du panneau contenant les boutons icnones pour la création et la gestion du contour du réseau
// BarButtons theLayoutContour = new BarButtons();
// Affiche le menu
Menu.CreateMenus(this);
// Maj de l'état de tous les menus
// Affiche la fenêtre
this.setVisible(true);
}
// Classe des fenêtres du réseau et de la gallerie des trains
public class WinInternal extends JInternalFrame {
// Pour éviter un warning
private static final long serialVersionUID = 4993363235763093908L;
// Classe pour la zone d'affichage des composant de la fenêtre interne
public class DisplayArea extends JPanel {
// Pour éviter un warning
private static final long serialVersionUID = -5609983333478303182L;
// Cette fonction est appelée à chaque interraction de l'utilisateur sur la fenêtre
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillOval(20, 20, 75, 75);
}
}
// Constructeur
public WinInternal(String ptitle) {
// Titre de la fenêtre
// Les quatres true indiquent dans l'ordre
// On peut la redimensionner
// On peut la ferner
// On peut la maximiser
// On peut la minimiser (icone)
super(ptitle, true, true, true, true);
// Met à la taille par défaut
this.setSize(Global.cdmMainWin.width - 40, Global.cdmMainWin.height - 120);
// Positionne les fenêtre en les décalant
winNum++;
this.setLocation(winNum * 10, winNum * 10);
// Zone d'affichage des composants ajoutés à la fenêtre
DisplayArea theDisplayArea = new DisplayArea();
// Couleur de fond de la zone d(affichage
theDisplayArea.setBackground(Global.internalBackgroundColor);
// Indique que c'est la zone d(affichage de la fenêtre
this.setContentPane(theDisplayArea);
}
} |
Partager