Une JFrame d'en ouvrir une autre
J'ai une JFrame et Composite plein de Jsomethings avec un actionlistener. Lorsque l'utilisateur clique sur un objet que je veux ouvrir un autre JFrame. Voici ce que j'ai fait:
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == rejectionbutton){
RejectApp ra = new RejectApp();
ra.main(null);
}
}
(RejectApp appelle une nouvelle JFrame.) Donc, une autre JFrame s'ouvre sur l'écran avec plus d'options. Il fonctionne bien (pour l'instant), mais je veux savoir est-ce la norme? J'entends l'appel de la méthode main comme ça?
Une autre question est, sans l'aide d'un cardlayout (dont je ne veux pas utiliser), est la meilleure façon de gérer plusieurs panneaux, en faisant ce genre de chose?
Vous pourriez envisager de MigLayout (miglayout.com), un excellent gestionnaire de configuration une fois que vous obtenez à la connaître.
Vous n'avez jamais fait de nous dire pourquoi vous souhaitez éviter le CardLayout.
Vous n'avez jamais fait de nous dire pourquoi vous souhaitez éviter le CardLayout.
OriginalL'auteur | 2011-02-06
Vous devez vous connecter pour publier un commentaire.
Je voudrais changer un peu les choses. Tout d'abord, généralement, une application a une JFrame et puis si on a besoin de montrer une autre fenêtre est modale ou non de dialogue modale comme peut être obtenu avec un JDialog ou JOptionPane. Cela dit, il est encore plus courant d'avoir une JFrame et swap "vues" dans la JFrame -- swap contentPanes ou d'autres grands panneaux via un CardLayout que ce serait imiter le comportement de beaucoup de gui tous les programmes que nous utilisons actuellement.
Personnellement, j'essaie également de la vitesse de mon GUI création vers la création d'un Composite ou JComponent plutôt que vers la création d'une fenêtre de niveau supérieur. De cette façon, si je veux afficher l'interface graphique comme une application indépendante, une boîte de dialogue, ou une applet, je peux pop dans le contentPane d'une JFrame ou JDialog ou JApplet respectivement, ou si un panneau intérieur de plus en plus complexes, GUI, puis l'insérer là, ou dans une application avec une permutation de vue, alors qu'une carte dans un CardLayout comme indiqué ci-dessus. La ligne de fond est que j'ai l'impression que cette structure vous donne le développeur de beaucoup plus d'options dans la façon dont vous pouvez utiliser cette interface graphique.
Aussi, je voudrais éviter d'appeler une autre classe principale que vous êtes en train de faire (en supposant que c'est le public static void main (méthode) que vous perdez tous les avantages de la Oups. Vous semblez aussi essayer d'appeler une méthode statique non de manière statique (en supposant que je comprends de votre structure du programme correctement).
Pour votre deuxième question, il soulève une question de mon propre: pourquoi ne veux-tu pas utiliser CardLayout?
edit: un exemple de ce que je voulais dire, c'est comme suit:
Il semble vrai pour la plupart des applications que j'utilise. Par exemple, lorsque vous utilisez Microsoft Word, combien de fenêtres principales avez-vous habituellement? Si l'utilisateur doit modifier une propriété d'une certaine sorte et clique sur un menu pour changer une propriété et une fenêtre pop-up, ce type de fenêtre est généralement vu > 90% du temps? De nouveau dans mon expérience, c'est une boîte de dialogue. Aussi, si l'utilisateur ferme une boîte de dialogue, est-il jamais tout risque de fermeture de l'ensemble de l'application? Pouvez-vous dire la même chose pour un JFrame?
+1 Aéroglisseur de la suggestion est la "bonne santé" de voir une JFrame. Il est logique d'avoir un seul conteneur de niveau supérieur.
Plein D'Anguilles, Il pourrait y avoir une notion de l'application principale, qui gère la création et l'élimination de toutes les autres images, et lorsque l'utilisateur décide de fermer le châssis principal, il doit réagir en conséquence (c'est à dire de vérifier si toutes les donné naissance à des images peuvent être en toute sécurité fermée, de rejeter la fermeture de l'application si la perte de données peut se produire, etc.). Enterprise applications de bureau ont de multiples non-boîte de dialogue de windows, les applications web ont plusieurs fenêtres (un lien peut être ouvert dans un autre onglet du navigateur ou de la fenêtre) etc.
Plein D'Anguilles Modalité doit être utilisé uniquement lorsque cela a du sens, non pas comme un moyen d'avoir les "autres"de windows.
OriginalL'auteur Hovercraft Full Of Eels
Je préfère créer une nouvelle instance de JFrame ou une sous-classe, ou un appel à une nouvelle méthode qui fait à nouveau un JFrame:
}
Une autre Mise en page simple-Manager est le BorderLayout, c'est la Mise en page par défaut-Gérant de la classe JFrame.
OriginalL'auteur const-ae
Remplacer YourJFrameNameHere avec la JFrame nom.
Simple, non?
OriginalL'auteur alwaysliketohelp