Je suis en train d'écrire un programme qui tente de simuler l'évolution d'une espèce, et il a une fenêtre qui ressemble à ceci: JDesktopPane et BorderLayout
origine la zone vide en bas à droite était un groupe spécial, et il est destiné à dessiner une représentation visuelle des spécimens, des emplacements et des chemins de déplacement (cela n'a pas vraiment d'importance). Cependant, vous serez en mesure d'ouvrir une sorte de fenêtre qui vous permet de créer/modifier différents éléments (comme les espèces, les lieux et les chemins de voyage). À l'origine, j'ai prévu que ceux-ci soient simplement des fenêtres contextuelles. Mais, je pensais que j'utiliserais peut-être les volets JInternal pour les popups, et l'écran de représentation visuelle.
Donc, dans mon constructeur de JFrames:
JDesktopPane pane = new JDesktopPane();
this.setContentPane(pane);
setLayout(new BorderLayout());//To layout the menubar, and the items on the left
panel = new GraphicsPanel(manager);
panel.setVisible(true);
Et dans le constructeur Panel Graphics: super("Graphic Project View",true,false,true,true);
Cela verrouille le Groupe spécial BorderLayout.CENTER, et il se remplit tout l'espace, ne permettant pas autre chose . Je suppose que c'est parce que JDesktopPanes utilise un OverlayLayout, et quand je mets la mise en page à BorderLayout qui remplace OverlayLayout, mon InternalFrame vient juste d'être ajouté au centre. Donc, la question est: Comment puis-je mettre en page les choses comme le JMenuBar, et le panneau gauche de la salle comme ils le sont maintenant, tout en maintenant la possibilité d'avoir JInternalFrames? Pour l'instant, je vais ajouter le JMenuBar via JFrame.setJMenuBar (JMenuBar) au lieu de JFrame.add (menuBar, BorderLayout.NORTH), puis changer le panneau sur la gauche dans un cadre JInternal, mais si possible, je Je préfère l'avoir tel quel. Je voudrais que je puisse simplement ajouter le DesktopPane au JFrame à BorderLayout.CENTER, puis ajouter le cadre au volet Bureau. Si le InternalFrame était limité à cette région, ça ne m'intéresserait pas, tant que c'est encore mobile, ect.
EDIT: Comment ajouter JInternalFrame (Désolé, il dit encore le panneau, mais il a été converti en un JInternalFrame):
panel = new GraphicsPanel(manager);
panel.setSize(desktop.getSize());
panel.setLocation(0,0);
panel.setVisible(true);
desktop.add(panel);
@camickr Oui, je suis d'accord, mais j'ai tendance à construire mon interface utilisateur loin du cadre, donc c'est une force d'habitude. Pour moyen, cela signifie que je peux ramasser le volet "base" et le laisser tomber où je veux. Je suppose que beaucoup dépendrait de l'interrelation entre les "contrôles" et le bureau. Si elle était modélisée correctement, vous n'auriez pas besoin du volet "base" car les modèles effectueraient le travail – MadProgrammer
Bon point, c'est le meilleur design. Suppression du commentaire (donc je ne donne pas une mauvaise suggestion aux gens). – camickr
J'ai essayé ça et ça n'a pas marché, peut-être que j'ai fait quelque chose de mal, je vais essayer à nouveau. Si cela fonctionne, j'accepterai votre réponse. – csga5000