J'essaie de retirer la barre de déplacement en haut du JFrame. Je voudrais garder les options minimiser et fermer qui apparaissent sur cette barre. Ce que je pensais était de retirer la barre (et les icônes). Ajoutez ensuite les icônes en tant qu'images incorporées, qui implémentent l'actionlistener JFrame. Il serait également nécessaire que cela fonctionne avec JInternalFrames. Toute aide serait grandement appréciée.Comment pourrais-je implémenter une nouvelle fonctionnalité JFrame?
Répondre
Vous devez prendre du recul et comprendre comment fonctionne Swing. Lorsque vous créez une JFrame, Swing utilise le widget OS pour le cadre. La barre de titre que vous voyez fait partie du composant OS et vous n'avez aucun contrôle direct sur celle-ci avec Swing. Vous pouvez masquer la barre de titre (et la bordure) du cadre en utilisant setUndecorated (false) comme suggéré plus haut. Dans ce cas, vous perdez toutes les fonctionnalités associées à la barre de titre (glisser et accéder à tous les boutons) et la bordure (redimensionnement). Donc, si vous avez besoin de cette fonctionnalité, vous devez tout recréer vous-même.
D'autre part, vous pouvez utiliser:
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
et Swing construire une barre de titre et Border pour vous et rajouter toutes les fonctionnalités par défaut. Donc, si vous voulez éviter de faire glisser, vous devez maintenant inspecter le JFrame pour tous ses composants pour trouver le composant qui représente la barre de titre. Lorsque vous trouvez ce composant, vous pouvez supprimer les MouseMotionListeners du composant pour éviter de le faire glisser. De cette façon, la barre de titre sera toujours là et les boutons seront actifs, mais le glisser sera désactivé. Je suppose que c'est plus facile l'ajout de toutes les fonctionnalités à un cadre non décoré.
Comme vous l'avez déjà compris, JInternalFrame est un composant complètement écrit en Swing, donc vous avez accès aux composants enfant, ce qui est essentiellement l'approche que je suggère pour le JFrame.
Wow, c'était l'une des réponses les plus complètes que j'ai reçues jusqu'ici! J'apprécie vraiment, laissez-moi essayer et revenir à vous – Jeffrey
Pour retirer la barre de titre, utilisez
setUndecorated(true);
Vous pouvez ensuite ajouter à nouveau des boutons pour agrandir/réduire. La source pour maximiser-bouton pourrait ressembler à quelque chose comme ça (juste pour avoir une idée). Utilisez JFrame.ICONIFIED
pour réduire le bouton.
JButton btnMaximize = new JButton("+");
btnMaximize.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(MainFrame.this.getExtendedState() == JFrame.MAXIMIZED_BOTH) {
MainFrame.this.setExtendedState(JFrame.NORMAL);
}
else {
MainFrame.this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
});
Avez-vous déjà essayé de l'utiliser avec un JInternalFrame? –
setUndecorated ne fonctionne pas pour JInternalFrames (bizarre je pensais qu'ils ont hérité de JFrames) – Jeffrey
Je vais essayer, mais pensez à modifier votre question concernant JInternalFrames. –
Pour JInternalFrames ...
javax.swing.plaf.InternalFrameUI ifu= this.getUI();
((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);
Oui, je viens de trouver que dans un autre forum :) –
pourquoi le downvote? Je suis nouveau à stackoverflow, est-ce une mauvaise forme pour afficher les codes trouvés dans d'autres forums? – Jeffrey
Jetez un oeil à cet article - Je pense que c'est à peu près ce dont vous avez besoin pour la partie JFrame.
http://www.stupidjavatricks.com/?p=4
Il est basé sur JDialog, mais il devrait être à peu près la même chose que JFrame. Maximiser/minimiser devrait être à peu près le même que le bouton de fermeture.
- 1. Comment implémenter la fonctionnalité d'annulation?
- 2. Comment mieux implémenter la fonctionnalité 'site fermé'?
- 3. Comment implémenter la fonctionnalité Zip dans VBA?
- 4. Comment implémenter la fonctionnalité back dans une page web asp.net?
- 5. Symfony: comment implémenter une fonctionnalité de recherche sur plusieurs modules?
- 6. Comment implémenter une fonctionnalité de chat vocal en utilisant Python?
- 7. Twitter Nouvelle fonctionnalité de tweets?
- 8. comment implémenter la fonctionnalité de déconnexion dans asp.net C#
- 9. Comment implémenter l'effet de retournement à une nouvelle activité
- 10. SharePoint - Déployer la nouvelle fonctionnalité default.aspx
- 11. Ajouter une nouvelle fonctionnalité de filtre dans les projets C#
- 12. Un conseil pour implémenter une fonctionnalité de reconnaissance de personnage?
- 13. utiliser jabber pour implémenter une fonctionnalité de salle de discussion
- 14. Nouvelle fonctionnalité MEF dans .net 4.0
- 15. Comment fermer JFrame suivi d'un autre JFrame?
- 16. Dimension Java pour JFrame. setSize (nouvelle dimension (x, y));
- 17. Comment implémenter la fonctionnalité de chargement partiel de la page
- 18. Comment implémenter la fonctionnalité MMS dans 3.0 sdk?
- 19. Comment implémenter la fonctionnalité de base de données efficacement?
- 20. Comment implémenter la fonctionnalité Fiverrs DamnQuickPay avec Paypal
- 21. comment implémenter la fonctionnalité split pdf dans l'application de cacao?
- 22. Installshield 11.5: Comment implémenter la fonctionnalité de fichier de navigation?
- 23. Comment implémenter la fonctionnalité Excel Solver en C#?
- 24. comment implémenter la fonctionnalité de recherche sur tableview dans l'iphone
- 25. Comment puis-je implémenter la fonctionnalité AJAX dans Flex
- 26. ASP.NET: Comment implémenter ma propre fonctionnalité de type AssociatedControlID?
- 27. Comment implémenter la fonctionnalité d'écran tactile dans WPF
- 28. Comment implémenter la fonctionnalité de tri dans gridview?
- 29. Comment implémenter un plugin jQuery avec cette fonctionnalité?
- 30. Comment implémenter la fonctionnalité Session Timeout dans MOSS2007/WSS?
Il peut être judicieux d'extraire la fonctionnalité de déplacement dans une autre question. Cela rend plus facile pour les autres de répondre. Et il sera plus facile pour les autres ayant le même problème de trouver la question. –